Introducing ContextRepresenters

Closes #953

This PR introduces the new class `ContextRepresenters` which manages all the contexts on a single Evaluator. It is used by `EvaluatorManager` in lieu of the `List` and `Set` it used before. Furthermore, this adds `ContextFactory` which has the sole purpose of creating new `EvaluatorContext` instances for a given Evaluator.