FlowWords must cache the selection before flowing

FlowChildren and FlowCells only MOVE nodes in the DOM. Which means
the DOM SHOULD keep the selection in the right place. But FlowWords
actually uses this.textContent to change the text. The DOM can
not keep the selection in the right place in that case, as it
has no idea what we are doing.

So rather than creating a complex high level selection manager
that would require every node to have IDs etc, we simply extend
the FlowWords mixin to cache and restore the selection before
touching the DOM.