Move cursor/selection rendering onto separate canvas #2

As requested I have remade the pull request...

Sorry for the delay

This is a copy of #1115


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