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.
Moved EvaluatorManager.State to be its own class EvaluatorState
Results of code review with Shravan
Merge pull request #954 from Microsoft-CISL/weimer_953

Introducing ContextRepresenters