Added the CachedSurface class back again.

Restored from a previous commit.
Added the render_text header and implementation from a previous commit.
Added the Label class. From that previous commit.
Fixed a template instantiation error in pong::math::normalize.
Added the Button class from that previous commit.
Fixed up the client CMakeLists.txt.

Added a static lib for client support, which includes the new files.
Finally make the CachedSurface generic.

It is now called Cache_Base. Located in a file called cache.hpp.
The CMakeLists.txt file has been reverted to a basic thing that doesn't
really do much, this is to avoid a failing build and will be changed
soon.
Added a dedicated file for cache related stuff that requires SDL.

It is being used in render_text.h. The CMakeLists.txt file has been
updated since render_text.cpp should compil.
Fixed up the Label class to work with the new caching class.

It doesn't really use SDL to SDL's fullest extent at this point. In
order to render it needs to regenerate a texture every time. Not very
good at all. Plan to fix this soon.