Handle contentEditable elements correctly

Continuation of #1050.

This PR makes link hints handle `contentEditable` elements correctly, and ensures we disable our shortcuts while such elements are active. This

* fixes #888 
* fixes #1136 
* fixes #1245.
@mrmr1993.  What do you think about the following:
- We enter insert mode.
- Then, with the mouse, we select some `contentEditable` text.
- Then, we hit `Esc`.

As currently formulated, `Esc` deselects the the selection *and* exits insert mode.

Is that the right behaviour?