Merged ContextPool logic into ContextEnvironment

There is no reason to have two objects in the domain with the same purpose and lifecycle.
Closes #412