Testing GCC diagnostic push/pop method of getting around unnamed struct warnings.

- Added explicit to appropriate constructors.
- Fixed #elif <preprocessor token> to #elif defined <preprocessor token>
Toying with templating math library based on dimension and type.

Potential pros:
- Never tried it before, would be good to have tried both ways.
- Would help prevent repetition between different dimensions.
- Good chance to practice templates (something I rarely do), albeit a relatively simple use of
  them.
Potential cons:
- Could eat up time. Might be far more than I'll need.
- Could be less efficient.
- Could increase compile times noticeably.
Implementing vecn.
Playing with methods of constructing vecn that do not require explicit specialization.
vecn implemented. Not so sure I like where this is going, need to use it some more.

- As far as performance goes, I'll wait and see if it's ever an actual issue. Need to get to
  making a game.
Renamed graphics_component_hack to sprite_component_hack so I don't forget later.
Simple matn implemented. Only implemented multiply for mat3.
Forgot to move some matn methods to hpp file.
Moved sprite_component_hack to sprite_component.h/cpp.

- Fixed minor warning in component_base.
- Fixed usage of vec* in various places.
Fixed permissions on cppclassgen linux executable.
Working on transform.

- Added static zero vectors for vec2-4. May change method if I ever need anything beyond a vec4.
- Created accessors for transform pos, z order, and scale.
Refactored code to use transform. Runs.

- Added dirty flag to transform.
- Temporarily made local transform in transform_component public. Need to design interaction
  between the two to see if there is a cleaner way to do transformation heirarchies than
  what I did in the past. Maybe some kind of inheiritance relation between the two (where
  get_pos will imply local, world would need explicit specification).
Changed transform_component to inheirit from transform for now.
Working on adding a container of components to entity.

- Experimenting with a unique_id class which gives a unique (unless billions of unique_ids are
  created) integer id. Different types can have their own set of unique_ids.
- Experimenting with having add_component construct component (instead of passing in an
  already created component).
Game works with entity owning container of components.

- Replaced static member of unique_id with static method.
Working on entity manager.
Adding externals submodule.

- Some linux modules are not easily accessable from package managers, this will make using those
  easier.
- This will allow me to keep all external source code out of my repo (such as stb_image).
Minor changes.
Fixed compilation errors on MSVC.

- Implemented entity_manager::remove_entity then realized it would be best to not have this method
  available and instead have a kill flag for each entity and then remove all killed entities after updating.
- Explicitly deleted unique_id assignment operator.
GCC compile error about confliting declaration of size_t.

- Happens when common/error.h is included from timer.cpp.
- No idea why I don't define size_t anywhere myself, don't want to waste any more time banging
  my head against this right now.