Make ContentBranchNode echo suppression work in CBNs that contain inline nodes

getRenderedContents() would give you the reference-identical original DOM nodes
for inline nodes, which is good because that way the CE nodes retain their
this.$element references to them, but also bad because attaching these nodes
to the temporary wrapper detaches them from the view. With the existing
order of operations, this caused the comparsion to fail and a rerender
to happen, so we just always rerendered CBNs with inline nodes, but a
slightly different order of operations would have made the inline
nodes disappear instead.

Make getRenderedContents() return clones of these nodes, but with a
property pointing back to original. This property is not taken into
account by .isEqualDomNode(), so do the comparison with the clone,
and if we decide to rerender, resolve these clones back to their
originals before rendering into the DOM.

Text replacements in CBNs containing inline nodes (e.g. aliens demo)
now no longer echo changes; without this commit they always echo.
Replacing a character adjacent to an inline node stil echoes, but that's
a separate issue that's also causing replacing the first character in
any CBN to echo.

Change-Id: Idd75cae3c9555f5aca4568666db203b3a3bc98cb
Merge "Make ContentBranchNode echo suppression work in CBNs that contain inline nodes"