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 (possibly) #1245.
@mrmr1993.  Why is this line needed?  It looks odd that we need this test for `element`, but if `element.parentElement.contentEditable` is falsy then we just return end up returning `false`.