replay: fix on 64-bit systems

The .length field of arrays is of type size_t when written, but it is
read back as an integer which is a different size and causes the
remaining reads to be misaligned.
gles: plumb view matrices to all drawers

This will allow decoupling the view matrices from the matrix stack.
gles: plumb through a model matrix
gles: add a shader program helper class
luminous: port to gles-compatible calls
texture: port to gles-compatible calls
field: port sidewalls to gles-compatible calls
screen: expose the brightness
screen3d: remove unused methods
spark: port to opengles-compatible calls
WIP: sparkfragment: port to opengles-compatible calls
wake: port to opengles-compatible calls
smoke: port to opengles-compatible calls
WIP: fragment: port to opengles-compatible calls
WIP: shape: split the shape class heirarchy

This will allow for incremental porting of the various shapes.
WIP: shaders: add basic shaders for drawable shapes
WIP: shotshape: port to opengles-compatible calls
fixup! WIP: fragment: port to opengles-compatible calls