Adds Sprite::Batch to optimize drawing complex graphics.

Sprite::Batch will allow one to transfer prebuffered vertices to the GPU
to quickly draw arrangements of a sprite sheet. For instance, a button
is drawn using components (topleft corner, topright corner, inner area,
etc). To arrange and draw these one-by-one is time and CPU consuming.
So, let's do that work once, transfer to the GPU and then simply tell it
to draw when it needs to do so.

If an object changes, the changes will have to be transfered again. It
is possible to minimize that transfer as we can also do with the Map
object. In fact, the map object is more or less a Batch itself, but with
extra semantics. Therefore, it may be possible to tear apart the Map
class and rebuild with a Batch.

TODO: Make the Batch class a system object and assign an identifier and
also handle destruction and memory freeing.