Working on engine flow.
Removed everything that isn't relevant for this sprint from plans.

- Need to scope properly and take things one step at a time instead of worrying about entire
  finished engine upfront.
Minor changes.

- Uploaded flowchart images for Sprint 2 to Trello.
Added virtual destructors where appropriate.
Working on debug drawing.

- Added debug_point_drawer and debug_line_drawer (WIP).
- Added debug draw shaders (which include color in the vertex).
- Added debug_shape_vertex.
- Added relational operators to vec.
- Slowly unhacking shader loading one piece at a time.
- Added file header to shaders.
Replaced all instances of (void) with ().
Added sleeping for excessively high frame rates.

- Game goes so fast that multiple draws are done for each update, which means that debug data
  is cleared and then draw is called again before it can be repopulated. Searching for a better
  solution.
Removed sleep. Moved where debug draw lines are cleared (since they are a slight hack anyhow).

- debug_drawers no longer clear automatically after draw. Moved clear calls to beginning of game
  logic.
- Explicitly turned vsync off for now so I can see what the actual FPS is.
Debug drawer functioning.

- Fixed template overload ambiguity.
Fixed circle drawing.
Adding system_base and graphics_system files.
Created space. Added rapidjson to external.
Replaced entity_manager with space.
Changed entity usage from shared_ptr to unique_ptr.

- Entity and component lifetime will be strictly controlled by spaces in a manner that prevents
  stale references from being held.
Toying with how to access entities from outside space. Very temporary solution implemented.
Fixed windows compile errors. Abandoning idea of space owning components.

- Added windows cppformat libs.
- Corrected improper use of uint in debug_drawer.
- matn and vecn constructors should NOT be explicit, to allow conversion from
  brace-init-list to std::array.
- Added vec*mk functions to allow avoidance of brace init syntax for most
  common vec dimensions (since it requires constructor call AND braces (vec*({}))).
Replaced all vecn creation with vec*mk calls.
Merge branch 'master' into unstable
Added mat*mk functions.

- Corrected typos in vec.
Experimenting with global set functions for vec2-4 to avoid brace syntax. Not liking at all.

- Minor formatting for math type files.