add format() methods to game_state objects, and add optional args to constructors.  This will allow all objects to be recreated from their format methods