Move cursor/selection rendering onto separate canvas

This patch moves IText cursor/selection rendering onto a separate physical canvas.

The canvas is created on ```enterEditing()``` and destroyed on ```exitEditing()```

By doing this we no longer have to render the entire scene via ```renderAll()``` when selecting text or moving the cursor.

Selection and cursor responsiveness is very much improved as a result, particularly on IText objects with several inline character styles.

Fixes issue #1106