Prevent resetInput from breaking context menu 'select all' in FF

Closes #2974
[hint addons] Don't include text after the cursor in completion

Completing inside a word used to try and take the whole word into
account. This is not typical completion behavior, and often not what
you want. After this change, the addons only take the part of the
word in front of the cursor into account.
[python-hint addon] Delete

The code was confused beyond belief, and the hintWords
functionality will provide the same completion power
without loading an additional addon.
Immediately read input on "input" event

To prevent race conditions where an API call triggers a
resetInput before the new input has been read.

Closes #2975
Allow clearing of cursor selections by ctrl-clicking them

Closes #2658
[soy mode] Add

See https://developers.google.com/closure/templates/ for documentation.
Closure Templates support text, HTML, JS and CSS code.

I'm not extremely happy with the indentation which is currently based
just on the Soy tags, not on the underlying code. Although this style
is possible and sometimes used, it's not the most common style.
[soy mode] Integrate, fix innerMode
[show-hint addon] Fix widget horizontal positioning

Closes #2983
[spreadsheet mode] Add
[spreadsheet mode] Integrate

Issue #2976
Make inputStyle an option, move relevant logic into TextareaInput

Add a dummy ContentEditableInput
Wire up some actual logic to ContentEditableInput

Simple things work.
Suppress mouse event handling during touch
Support clipboard events, fix some selection issues
Clean up some FIXMEs
Make selection drawing work when the viewport doesn't cover the selection
Further tweaks to selection polling

Still doesn't work properly
Add scanning of surrounding dom nodes when looking for a selection node
More selection nonsense
Don't disable mouse events during touch when using textarea input