Refactored Renderer<->Engine relationship

- Renderer is now fully link time polymorphic
- Before we had a templated TaskMaster class with the render_type
  parameterized
- This caused several annoying issues, in particular every client of the
  TaskMaster class was bound to the renderer_type.
- Now, Engine provides a render_api.h, containing the functions that
  a Renderer class must implement.
- Swapping out the renderer now only requires implementing these api
  functions, andmodifying gaen/main_win32.cpp to initialize this other
  class.