Engine & graphics module changes/additions

- Add scene and scene_object structs
- Move extension checking out of mesh code, into init_graphics()
- init_engine() initializes graphics module to check for extensions, etc.
- Scene will contain a tree structure of scene objects representing
  objects in the game world.
	- scene_object currently stores local/world transforms, but will
	  add an index for that object's transforms into a large buffer of
	  matrices so that all of that uniform data can be sent to the
	  shader in a UBO or something like that. It needs to play well
	  with MultiDraw* calls; we can't be updating uniforms for our
	  shader between batches.
		- Probably only need to store world transforms in this
		  buffer, not local transforms.
	- Scene will simply represent a "frozen moment" of the game
	  world. Things like physics will be managed separately at a
	  higher level in the application and be updated before draws.
	- Scene might contain a mesh_buffer as a component for storing
	  data of objects, but that feels like it'd be more appropriate
	  at a higher level, since the scene doesn't need to know what
	  data it's working with, just where it is and how much of it
	  there is.
- Future notes
	- May need to add a reference counter for mesh blocks, so the
	  buffer knows when it has clean up work to do. A "housekeeping"
	  call may be implemented to do this, along with coalescing
	  blocks, etc.