this doesn't use the MessageComposerStore on purpose so that
both the new and old composer don't overwrite each others state,
as the format is different.
for this, we need to store the last caret in the editor,
to know where to insert the user pill.
Because clicking on a member blurs the editor, and the
selection is moved away from the editor.
For this reason, we keep as cache of the last caretOffset object,
invalidated by a selection with different values.
The selection needs to be cloned because apparently the browser
mutates the object instead of returning a new one.