Minor chanes.
Merge branch 'master' into unstable
Merge branch 'master' into hack
Updated LE_FATAL_ERROR* to use cppformat.
Working on tileset loading. Created test tileset.
Removed control display - was only for perf_vis demo.
Removed message exception and cleaned up logging of errors to be  more consistent.

- In some places I would use LE_FATAL_ERROR and exceptions (which I would then fatal error on).
- Handling logging of error at error site instead of passing error as a message to be printed
    later.
Using rapidjson to load tileset file working (still need to add more info to tsd file).

- Hacked in getting line/column of error since rapidjson doesn't support that.
- Created common/char for helper functions relating to the char type.
  - Moved is_newline lambda to common/char.
Tileset loading first pass done, need to test. Working on adding hacked rendering to test.

- Added function to divide a vector by a different type than the vector contains (adding as
    needed).
(NC) Working on registering components upon creation.

- Moving from template methods to methods using unique_id::value_type directly. I could move
    component creation to space, but I think I prefer having entities create them. This brings
    up the issue of entity vs space ownership of components again, may want to consider
    reworking if this method becomes too bad.
Itertaing over containers components instead of iterating over entities and getting components.

- Fixed major crash bug that hadn't popped up yet. When updating logic components they can add
    new entities and components. With an unordered_map (what I was iterating over before) this
    has a small chance of invalidating all iterators if a rehash happens. With a vector (what I
    am iterating over now) this has a 100% guarantee to invalidate all iterators if the vector
    grows. I am now filling a copying all logic components to a temp vector at the start and
    iterating over this. This adds consitency, as before when a new logic component was added
    it may or may not be updated that step depending on where in the hashmap it is placed; now
    it won't update until the next step.

Fixed crash bug that hadn't popped up yet.
Hacky tilemap drawing.

- Fixed tileset creation logic - numerous issues.
- Added bounds checking for matrix indexing - too used to using mat4.
- Added draw functions to both renderable_buffer classes. Note that
    renderable_element_buffer::draw has the start parameter in a different place than
    vertex_buffer::draw_elements. vertex_buffer is meant to mirror OpenGL, so I'm leaving that
    in the less logical location that it exists at in glDrawElements.
(NC) Starting on tilemap loading.
Added parse_file wrapper around rapidjson parsing.
Loaded tilemap rendering.
Added "infected" tile.
Refactoring existing game logic to use logic_components properly.

- Added null unique_id.
- Added debug_drawing_enabled flag to space.
Added pausing of the entire engine (minus renering).
Further refactoring of logic using components.

- Fixed bug in physics loop, was always starting at begin + 1 in inner loop instead of
    outer + 1.
- Currently the game is "restarted" by killing all entities then adding another game_hack.
    Since components are initialized upon adding and entities are only removed after a step,
    this causes the scene to essentially exist in a duplicated state for the frame. Right now
    I'm playing with enemies harming other enemies, due to the above if the enemy hasn't moved
    from its spawn point the new enemy will die instantly.
  Debating on method to solve. How entity/component creation interacts with a the concept of a
    single time-step is something I need to examine further. Some options to solve for now
    (for future reference):
    1 - Delay creation of entities and components by using some sort of creation message that is
      executed on the next step.
    2 - Delay adding of entities and registration of components by adding them to a temporary
      container that has its contents moved to the main container every step.
    3 - Always check if an engine component's owner is alive before using.
    4 - Delay logic component initialization until next frame (inconsistent with teardown).
    5 - Instead of just creating new entity/component and killing all other, kill entire space
        and create a new space (fix most isolated to this issue).
Going with creating new space approach to solve issue from previous commit.

- Now iterating over a temporary container of spaces since other spaces can be added while
    updating.