An environment contains a list of projects that need to be loaded, together with any data that the environment may need.
For instance an environment will typically contain a data stored in a global which determines how LCW Menus are created.
This data needs to be loaded into the environment from individual projects. Therefore this model contains handlers that can load and merge this data, providing access to scripts that need it and instructions how to build it from individual projects.