Made the global FontRenderer in the Game class private.

Also, I added a public getter for this member!
More massive Refactoring!

- General code formatting:
  - `#pragma once` as an include guard.
  - #include "SDL.h" instead of #include <SDL/SDL.h>
  - Documentation in the implementation file!

- The Label class has been modernized, it now uses a FontRenderer to do
its rendering, also, it now inherits from RenderableEntity!

- The CachedSurface class now has protected move constructors and
assignment operators, in this way, the derivatives have control on
whether they want to allow moving the cache or not! Also, the move
assignment operator wasn't returning *this, so now it does!

- The Button class has also been modernized! It does not use a cache any
more, but it does inherit from both EventHandler and RenderableEntity!
It too, now accepts a FontRenderer which can be passed at construction
time or later, with a setter and getter just added! It is stored
directly in the internal Label.

- All three of these implementation files have been added to the
CMakeLists.txt file!