Don't misidentify RTs as UAVs if UAVStartSlot is mis-set to 0
Protect against the case of setting UAVStartSlot=0, NumUAVs=0

* Caused the render state tracking to get confused (as UAVStartSlot is
  used to determine the number of RTVs) and led to weird inconsistent
  states being restored. Most obviously led to RTs not being set when
  they should have been on replaying and drawcalls going missing.
Keep list of drawcalls writing to each target
Add externally visible API to query for pixel history
Validate x/y are in bounds
Pass through current frame #, and only list events up to current event #
Add interop structs for pixel history
First pass of pixel history impl (not complete)

* Uses occlusion queries to determine which events touch a given pixel
  (by replaying with all tests disabled except scissor, and scissoring to
  the pixel).
Replay each drawcall with correct state
Create a texture to store before/after values as we go along

* In the case where blending is disabled this gives us the passing shader
  output value (when blending is enabled we need to get the in between
  fragments, if any.
Check whether tests are on/off and detect trivial test failures
Add uint8_t -> float SRGB conversion function (using LUT)
Interpret/convert pixel values as appropriate to fully expanded form
For each matching event determine which tests it fails (if any).
Change bools to bool32 (guaranteed size)
Add drawcall flags for clearcolour/cleardepth
Add D3D11 driver side call to fetch drawcall by event ID
Allow specifying a background colour per-column on a TreeListNode
Further progress on pixel history view

* Added simple UI
* Don't apply SRGB curve to alpha data
* Account for clear calls not returning occlusion query results, and for
  depth/colour clears.
* Fix typo (shaderDiscared)