-- Added GetEnv() to toolBase so toolchains needing to modify os.environ can return their modifications in a dict.
Any entries in the returned dict will overwrite what is copied from os.environ.
-- Changed msvc's _setupForProject to run vcvarsall.bat for each architecture being built and caching the results for each one.
-- Added a utility function for creating a copy of os.environ and updating it with the result of the input tool's GetEnv() call.
-- Passing the new toolchain environment into subprocess.Popen() when compiling and linking.
-- Added the bin path back to msvc since passing the env into Popen isn't enough to make it find executables not in the default path.