Add glBindMultiTextureEXT - still need to add rest of EXT_dsa funcs
Add some extensions that we already support, and ARB func aliases
Use proper wglGetProcAddress hook
Check that functions are available before doing anything
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
Make sure unmap chunk isn't lost and goes in buffer record

* If we're ignoring a map it's marked correctly as dirty, but otherwise a
  buffer could be mapped once then not touched, not become dirty, and so
  we need the unmap chunk in its record.
Mark SSBOs and atomic counter buffers as dirty when bound
Calculate the right size (including padding) for D32S8
Fix for map/unmap to capture properly while idle