Build-scoped environment tables

I've been using tundra 2 for a couple of days (it's great by the way, thanks!) and this was an idea I had based on my initial experience. There seemed no place to define globally-shared configuration that could be used for both the IDE project generation modules and for build configuration. For example, the MSVC module puts projects under OBJECTROOT by default, but there's nowhere for me to change the OBJECTROOT that's visible to the IDE modules. 

There's IdeGenerationHints that can be used in this specific case, but in general it seemed like it would be nice to configure these modules through the environment, where you can use interpolation to build paths, etc.

---

Add support for "Env" and "ReplaceEnv" tables in the data passed to
Build(). The tables have exactly the same form as those inside a Config
table. Unfiltered variables defined here are added to the default
environment and are thus available globally, even to the IDE project
generation modules. Variables with a "Config" filter are added to the
dictionary of any configuration matching the filter (they are not added to
the global environment).

The motivation for this change is that there is currently nowhere to
define variables like OBJECTROOT, which a user might like to share between
IDE generation and build configuration, such that they are visible to
both. It also makes it possible to take advantage of the environment's
interpolation syntax in building paths to configure the IDE modules.

The new tables can also also provide a slightly less verbose alternative to
inheriting a table of common variables in every configuration, for
defining shared variables.