Make cursor sub-element CSS styles component-specific

Previous implementation was using the element type (span or div) to
determine if the element was a handle or caret. This is problematic if
additional elements are placed inside the cursor node (as necessary for
proper IME support)
Allow multiple subscribers to the cursor update event
WIP Partially working. Still needs more corners rounded

TODO
- Figure out if this works on touch screens?
- Add license information to new classes
- Test in an NV build
- Revert Caret changes
- Fix caret blinking around images (blinks really high)
- IME overlay in safari is really broken
Don't reset focus if the event trap already was in focus
Test harness to help troubleshoot some IME/editor issues
Firefox bug workaround

https://bugzilla.mozilla.org/show_bug.cgi?id=773137
https://bugzilla.mozilla.org/show_bug.cgi?id=787305
Regain event trap focus in the IME rather than SessionController