Refactored API to add GameAgent middle layer

GameAgent bridges the game between the theoretical and the practical
implementations.