Add heuristic to avoid extreme bloating with repeated glTexImage

* Seen in Metro Redux, glTexImage was used to upload a 1920x1080 32bpp
  image over and over, and each chunk faithfully recorded the data. Instead
  we detect when glTexImage is called with the same size parameters, no
  resizing/recreation effectively occurs, so we drop the chunk and just
  mark the texture as dirty to fetch the data later.
Allow glBindBufferBase/glBindBufferRange and glBindBuffers for b2c

* Seen in Metro 2033 Redux.
* b2c = bind-to-create. These functions are valid to do that, so we
  serialise a glBindBuffer chunk to create them.
Mark framebuffers as high traffic/dirty after too many attachments

* Seen on Metro 2033 - if a single FBO is used for many cases, with
  attachments added and removed repeatedly. We just give up and fall back
  to fetching them as frame initial state for that framebuffer.