Adding time range rendering.

This cleans up a lot of the painting code as well as implementing the time range rendering. In short:
* renaming types to remove conflicts
* adds key modifiers to painter input events to remove hacks
* makes all painter painting and input take a rect bounds instead of just a width/height
* moves a lot of the rangerenderer code into a shared rangepainter type
* adds simple layout to painters
* implements a bunch of timerange stuff for level detection and the painter
* adds some new colors for timeranges

Fixes #187. Fixes #192. Fixes #191.