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.
No, never. It returns an object with `type: "None"`.

The first answer is doing browser compatibility; if `document.selection` is present, then it's Internet Explorer.