Use a chimera instead of &#xFEFF; in inline slugs

Chimeras are single, unicorn-like <img>s. Using them instead of
&#xFEFF; (zero-width non-breaking space) seems to have the same effect
for cursor behavior, and does not involve text that we need the observer
 to ignore. With this change, typing in an inline slug works without pawning.
The typed text ends up in the inline slug's <span> before/after the image.
It gets SurfaceObserved correctly despite that, because the <span> isn't
treated specially any more.

Also, don't rebuild entire paragraph when inserting text in slug location.
We already didn't rebuild the paragraph when text was inserted
into an existing text node: instead we resized the text node.
But for cases where the text insertion creates a new text node
(when typing into a slug), we would still rebuild the entire paragraph.

Instead, add an operation to DocumentSynchronizer to insert a new
text node, and use this operation in TransactionProcessor when
a text node insertion is detected.

Now that TextNodes can be spliced into existing ContentBranchNodes
without rebuilds, set ce.TextNode's $element to an empty collection,
so onSplice doesn't try to insert a span that will then be removed
again by renderContents. This allows us to avoid rerendering
when SurfaceObserver generates transactions like these
(onSplice will no longer modify the DOM and renderContents
will notice that the rendering is already up-to-date).

Changes:
* Replace FEFF with img in inlineSlugTemplate
* Make most slug-specific logic apply only to block slugs
* Account for inline slugs in getNodeAndOffset's unicorn adjustments
* Stop pawning inline slugs; and kill pawning code completely now that it's unused
* Respect render lock in CBN setupSlugs; maybe this should be in onSplice instead?
* Update tests for new inlineSlug structure

Change-Id: Id360d90d6cf6adad29b1f5f14bc27b7dc8109851
Merge "Use a chimera instead of &#xFEFF; in inline slugs"