Sightly cleanup code
Update texture unit setting to reflect API

- I didn't particularly like having the texture unit binding as a
function on an instance of a texture, because that implies that the
texture unit is somehow dependent on the texture object
- Instead, I made it a static function on texture to reflect the reality
that texture units are a separate idea from texture objects
Add uniform setters to program

- Added default uniform value. The intent here is that a retrieval of a
non-existant uniform should not completely crash the program. This may
be undesirable behaviour in a proper engine, but for my purposes
simplifies things nicely.
- Added static setters on Program for setting uniforms, to reflect fact
that they modify state of currently bound Program.
Add rendering of AABB

- Now, just need to determine size of md3 file to properly size it
Rearchitect MD3 Loading

- Renamed MD3ModelLoader to just MD3Model
- The new class is more of a file reader than a simple read once then
done kind of deal
- This will allow for more flexible retrieval of surfaces and frames
Read frames from MD3 file

The endgame here is to get a bounding box from the model file to help me
debug why the rest of the loader isn't working
Calculate and display the bounding box of model