Merged ContextPool logic into ContextEnvironment

- There is no reason to have two objects in the domain with the same purpose and lifecycle, so ContextPool functionality has been merged into ContextEnvironment and `ContextPool` interface is gone
- Environment now has a link to a Suite
- Contexts now could have different constructor arguments
- Context arguments could use custom argument resolvers, which is even clearer way to inject dependencies into the contexts (in addition to context initialisers).