hide state implementation details from state context

* refactor StateFactory to make State from StateType
* cleaned and merged tests for context in a single test class

Idea is to ensure RaftStateContext does not have knowledge about implementation of states. I removed the  Guice automatic factory for `StateFactory` in favour of a concrete class because creation of states is simple enough (plain ctors invocation).