Added BufferBuilder for attr tracking.

A VertexBuffer is now built using a BufferBuilder which allows keeping track of
vertex attributes. VertexBuffer::draw_triangles() enables the right vertex
array and calls VertexAttribPointer with correct values.
Shader expressions & VBO orphaning.
Merge branch 'feature/better_vbos' into develop

VBOs now keep track of their own attributes, replacing a lot of calls to
VertexAtribPointer, EnableVertexArray etc. with a single draw_triangles() call.

Also paves the way to a unified rendering model.
Added a generic Renderer module.

This module and associated struct allows a rendering pipeline to be defined in
terms of, at the moment, simplistic steps. Each step has an associated Shader,
a number of textures (some which may be shared using Rc-s) and static VBOs.

This is a modest start of the 'unified rendering model' that I'm trying to
implement. Importantly, in the future we'll need dynamic/stream VBOs and
dynamic index buffers into static VBOs.
Style fixes & dead code removal.
Do not render sky things.
Fixed flat fragment shader issue.
Merge branch 'hotfix/flat_atlas_issue'
Merge tag 'flat_atlas_issue' into develop

Fixed flat atlas problem.
Bump version to 0.0.3
Merge branch 'release/0.0.3'

* Redesigned VBOs and rendering model. Much more scalable.
* Command line arguments for WADs and levels.
* Simple sky rendering (i.e. don't render sky flats & walls).