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.