Add support for browser IME & on-screen-display keyboards

Add support for IMEs using the built-in browser composition capabilities. This has been tested in the following configurations

General
-----------
 * Using the arrow-keys whilst in composition moves the content-editable caret around, causing it to become visible.

MacOS
----------
- [x] :+1: Chrome - IME fully functional + Option+char partially supported
- [x] :+1: FF - IME fully functional + Option+char partially supported
- [x] :+1: Safari - IME fully functional + Option+char partially supported

In another patch
============
* Better support for Option+char
* Support long-press character input

Long-press and some Option+char events do not work on MacOS, as they are rather strange combinations of textInput & keypress events.

Windows
------------
- [x] :+1: Chrome - IME fully functional
- [x] :+1: FF - IME fully functional
- [x] :+1: Internet Explorer 11 - Typing still works normally, but composition has been crashing my test browser. Need to retest with the current head to see if this is still the case. *Update: this seems to work pretty fine now actually. No crashing!*

  * IE : Starting composition, then hitting the left or right arrow incorrectly moves the resulting character to the new place
  * IE: Selecting a block of text and attempting to overwrite it places the pressed char beside the new character being composed

Linux
-------
- [x] :+1: Chrome - IME doesn't work at all. Linux IME appears to send some rather strange events. Potentially filtering can be added to help however? *Update: fixed!*
- [x] :+1: FF - IME fully functional

Android
----------
- [x] :-1: Built-in browser - Document renders fine. No on-screen keyboard. Cursor placement appears to work however
- [x] :-1: Chrome mobile - On-screen keyboard vanishes after each word is complete
- [x] :+1: FF mobile - On-screen keyboard appears to work fine (if sluggish)

iPad v1
----------
Jos said WebODF wasn't working at all (wasn't even showing editor chrome)

iPad v2
----------
Unknown

Any other configurations/devices people can think of?