Refactor game logic. Add abstract layers and game pseudo-engine.
Merge pull request #4 from stxnext/3672_refactor_game_logic

Refactor game logic. Add abstract layers and game pseudo-engine.