Number of mips should be clamped to MAX_LEVEL+1

* Even this isn't quite enough. We're actually assuming a 'complete'
  texture, i.e. one which has had all mips uploaded/init'd. It's actually
  valid to have a texture that doesn't have all of its mips initialised
  but as long as you don't use them, ie. you bind a point sampler or you
  use it as a framebuffer attachments, it's valid. So REALLY in the
  non-immutable case, we need to iterate over every level and query to see
  if it's been configured, e.g. by fetching its width. Sigh.