currently TaskEnvironment has an internal constructor, however task authors may wish to unit test their task classes by setting a mock ibuildengine, and now they'd need a mock TaskEnvironment - and it does not make much sense for them to reimplement what we do in MSBuild and they'll probably be interested in what is the real behavior of msbuild's TaskEnvironments (multithreaded/multiprocess) with their task
it would make sense to expose TaskEnvironment (with clear intent that it's an api for testing)