Improve Surface scaling performance

In previous builds, the current Game State's Surface was resized and
then blitted during each game cycle. Whenever it was resized, the
resized version would be used to create a new Surface. However,
continually creating new Surfaces is a very expensive action as
far as performance goes.

Now, the resized Surface is sent to one of three possible Surfaces
(each with dimensions pertaining to the possible screen dimensions),
which are only created once when the game starts up. This way,
no new Surfaces need to made during resizing.

The performance increase is very apparent: changing the window size
in-game occurs with almost no lag!

The documentation in game_state_manager.py has been overhauled to
reflect these changes, and also to better conform to the Google Python
Style Guide.