refactor board layout, extract board IO, update specs, add first_player and next_player as attributes on game