Committing in-progress broken work.

This commit should be squashed.

The feature that I'm working on adding here is support for pasting
something like this:
<div>New content</div><div>More new content</div>

Right now, that will fail because it will attempt to do an
elementInsert for that first tag providing the tagID for the second
tag as the "beforeID"... which doesn't work because the second tag
has not been added yet.

One approach to fixing this would be to add that second element *first*.
The path I was taking in this branch was to keep the order of edits
the same but make the beforeID reference the first element to the right
(among the neighbors/siblings) that was not just added.

Where I ended up is rejiggering findElementAndText to be able to do this
search. It's a bit more complicated than what that function was doing
previously, especially considering the lastChild/firstChild cases.
As of now, I would guess that this function would be in for a good bit
more rejiggering before it's fully right.

But, once that function is working correctly, then it should just be
a matter of changing the calls to it to pass along the maps with the newly
inserted keys. It's worth adding a test for something like:

foo <div>more new content</div>

because that text node should have a beforeID of the element after the new
div.
Fixes for multiple-tag-insert case:
* Make newlyInserted be an array of hashes so we don't have to combine the elementInserts and textInserts objects.
* Fix condition in for loop when moving leftward.
* Don't skip newly-inserted elements when moving leftward.
* Just continue around the loop to find the next element after finding text.
* Emit replaces before inserts, since replace positions will also assume that inserts haven't happened yet.
More multiple-tag case fixes:
* When determining whether a tag is really new or not, look upwards to find
  an ancestor that has the same tag ID as the marked range containing the
  tag (instead of just looking at the immediate parent). This makes it work
  for new nested tags, which were broken before.
* Only ignore newly inserted tags for calculating elementInsert positions.
* Move textReplace edits back after textInsert edits, so that both kinds
  of text edits can refer to newly inserted tags.
Merge branch 'ResearchLiveHTML' into dangoor/two-tags

Conflicts:
	test/spec/HTMLInstrumentation-test.js
Merge pull request #4707 from adobe/dangoor/two-tags

[LiveHTML] Handle multiple tag inserts