Support VAO 0 being used, by creating fake resource record for it

* We pick up the properties of VAO 0 on frame capture as dirty state, and
  then replay it into the fake VAO we were already creating for VAO 0.
* Eventually this record will be entirely trimmed/ignored for programs that
  don't use VAO 0 by frame references, but for now we fetch it needlessly.
  It doesn't seem to fire any errors.
If we're retyping in BindBuffer(), remove any redundant BindBuffer()s
Handle repeated re-specifying of buffer textures by marking dirty

* Also added handling for dirty buffer textures - there are no contents to
  copy, those are handled with the buffer, so instead we just grab the few
  parameters that are valid to re-specify the buffer texture.
Fail in a friendly way (ie. not crash) if EXT_dsa isn't present

* Eventually I'll add a wrapper layer so that if EXT_dsa isn't present then
  it just gets emulated, but for now we require it to be present even if
  the captured program didn't use it.