Merged ContextPool logic into ContextEnvironment

There is no reason to have two objects in the domain with the same purpose and lifecycle.
Closes #412
Made clear dependency of ContextReader onto ContextEnvironment
Changed the way context parameters are defined

Contexts now could have unique sets of arguments
Added reference to a Suite into an Environment
Added support for context argument resolvers

Useful for integration with other frameworks. For example, in case of Symfony, we could define
ContainerArgumentResolver, which will resolve `@service` and `%param%` context parameters into
actual services and parameters from the application kernel container. This will allow people to
define contexts with clear dependencies without the need to inject the kernel everytime via
context initializers.

/cc @stof