Several improvements for `Intervals<T>`
Several improvements for `Intervals<T>`

Previously, members were accessed as methods of the iterator (e.g.
`iter.start()`); now this becomes `iter->start()`.

This also adds const iterators for `Intervals<T>`, which allows the use of
`const Intervals<T> &`.

The bounds for intervals have been renamed `start` (inclusive lower bound) and
`finish` (exclusive upper bound), to avoid confusion with `begin` and `end`,
used for iterators.

Finally, the behaviour of the old `setValue` method was very confusing, and this
has been replaced by three methods with behaviour that is much easier to
understad: `setValue`, `split` and `mergeLeft`.

TurtleRockStudios/renderdoc_public,TurtleRockStudios/renderdoc_public,baldurk/renderdoc,TurtleRockStudios/renderdoc_public,Zorro666/renderdoc,googlestadia/renderdoc,Zorro666/renderdoc,baldurk/renderdoc,Zorro666/renderdoc,TurtleRockStudios/renderdoc_public,Zorro666/renderdoc,Zorro666/renderdoc,googlestadia/renderdoc,baldurk/renderdoc,googlestadia/renderdoc,baldurk/renderdoc,TurtleRockStudios/renderdoc_public,TurtleRockStudios/renderdoc_public,baldurk/renderdoc,Zorro666/renderdoc,googlestadia/renderdoc,googlestadia/renderdoc,baldurk/renderdoc,googlestadia/renderdoc