Split parent and child code into functions for better output
Introduce TEST_EQUAL for better output
Compare each entry in env-pointer and argv
Don't check env-pointer values against getenv() as they might differ:
When launching the program from e.g. bash with `temp=bar`then there is
TEMP and temp in the list (env-pointer) but getenv/GetEnvironmentVariable
is case insensitive picking up the first matching value.
On AzP the test fails due to BUILD_REQUESTEDFOREMAIL= being in the env
pointer but not in the environment.
On Windows a "set FOO=" UNsets FOO so empty values are likely not part
of the environment, hence don't check via getenv for those.
Add a test including an empty env variable.