Off screen rendering and retina support

- render layers off screen
- pixel doubled display support
- allow layers to rerender themselves without causing other layers to rerender
- split rich text support from highlighted text; highlight text only supports a single line height, which means line heights and tops don't have to be precalculated.  Instead of using an interpolation search algorithm ( complexity O( lg lg (N) ), algebra can be used ( complexity O( 1 ) ) to calculate row metrics.
- split canvas into canvas and scrolling canvas