Added a new system to switch game states.

 - Instead of setting a variable. We just have a pointer which is set to the GameState to be.
 - If Button::game_state_to_be_ is a nullptr everything goes just as one would expect, since nothing needs to happen.
 - If the GameState to be is not a nullptr at the beginning of the main loop it is handled and the new game state is replaced in.
   - Since the old game state won't have anything pointing to it, it will probably uninitialized here.