Fixes for replay, and populating hooks (call through hooked func)
Add resource record parent for VAO when binding buffer
only use CUBE_POSITIVE_X as a query target for CUBE_MAP

* GL_TEXTURE_CUBE_MAP_ARRAY can be used directly as a query target
glCopyBufferSubData should contribute to record update count
Fix glBufferData re-creating, preserve chunk ordering
Only explicitly bind vertex array object when reading, not executing
Vertex buffer functions also need to bind the VAO when reading
Handle binding 0 imagetexture
Handle BGRA vertex attributes
Make sure to apply initial contents before first replay of frame
Track our minimal shadow state on a per-context basis

* We track as little state as possible - basically only objects bound to
  binding points that we need to identify for old-style non-DSA functions.
  This is mostly for convenience - the best balance between tracking GL's
  _insane_ state vector and having to query everything we want every time.
* Although we don't properly handle multiple contexts, we need to make sure
  this state is tracked per context otherwise we can get weird mismatches
  and get crashes with e.g. invalid VAOs.
Provide index to SV_VertexID when using index buffer. Refs #113