Split RiskGameState into interfaces and implementations

So for the exercice I'll be able to provide in a separate library, `RiskGameState` interfaces and engine already implemented.
I think we can do even better if we provide immutable `PlayerState` and `CountryState` so we don't need to implement them and add observable. What do you think?