Avoid reattaching nodes if they would be distributed to the same position

When doing Shadow DOM distribution we should avoid reattaching nodes that would
be distributed to the exact same place. Before this patch if you caused a
distribution recalc we'd always reattach all nodes that were distributed resulting
in a massive amount of render tree churn and a huge layout. This is particularly
nasty if you had a custom element like <news-feed> that contains a bunch of <article>
elements bring projected into a shadow. Appending a new <article> would result in
the reattach of all previous <article>'s meaning a giant layout.

Now we attempt to find the differences between the old and new distribution inside
InsertionPoint::setDistribution() and only reattach things that have changed locations.
This isn't perfect with reprojection, since two nodes may have changed locations in
one InsertionPoint, but then be reprojected to the exact same location later, but it
works in many common cases.

The result is very promising:

/ShadowDOM/ChangingClassNameShadowDOM:Time          64% better
/ShadowDOM/ChangingSelect:Time                      10% Better
/ShadowDOM/ContentReprojection:Time                 84% Better
/ShadowDOM/DistributionWithMultipleShadowRoots:Time 77% Better
/ShadowDOM/LargeDistributionWithLayout:Runs          7% Worse 
/ShadowDOM/MultipleInsertionPoints:Time             86% Better
/ShadowDOM/ShadowReprojection:Time                  84% Better
/ShadowDOM/SmallDistributionWithLayout:Time         84% Better

So we take a slight perf hit on core distribution time (LargeDistributionWithLayout)
to do the extra work, but we get 64-86% faster on the other benchmarks by not
doing the resulting massive layouts and reattaches since all these tests append
and remove a div leaving the distribution exactly the same as before. The ChangingSelect
test models a case where we changed all nodes in the distribution (toggling between sets)
still showing a 10% improvement.

One test needed rebaselining because it shows this in action (fast/html/details-remove-child-2.html)
since now when you change the direct children of a <details> element we don't reattach all of them (yay!).

Review URL: https://chromiumcodereview.appspot.com/22733002

git-svn-id: svn://svn.chromium.org/blink/trunk@155970 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Add API to WebFrame to enable/disable caret.
This can be used to disable the caret when the embedder wants
to draw its own caret (for example, for touch based text
editing, the browser shows a caret handle which can be
dragged around with touch).

BUG=none

Review URL: https://chromiumcodereview.appspot.com/22746004

git-svn-id: svn://svn.chromium.org/blink/trunk@155971 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Remove custom bindings for WorkerGlobalScope importScripts

BUG=262140

Review URL: https://chromiumcodereview.appspot.com/22797003

git-svn-id: svn://svn.chromium.org/blink/trunk@155972 bbb929c8-8fbe-4397-9dbb-9b2b20218538