Content editable caret position

The content editable component sets the innerHTML every time the component's `value` property changes. Firefox doesn't like this and sends the cursor to the beginning of the node. The component now keeps track of the caret position.