Added the GameContract.

@bsoetaer 
Yeah, board dimensions should definitely be an invariant.