Harden Custom Element callback dispatching against unexpected enqueuing.

This hardens two aspects of the Custom Element callback dispatcher.

First, the correct timing of Custom Element callback dispatching
depends on DOM-modifying methods being guarded with a
CallbackDeliveryScope. However we didn't get to all of these places
yet, so for now, protect the dispatch mechanism itself with a scope.

(It would be nice to assert that the scope is empty on exit, but
because of the way the created callback enqueues an entered document
callback for elements in the tree at the point at which the created
callback starts, that assertion would be wrong.)

Second, swap the Element->Element Queue map with an empty map before
deleting it. This is because deleting an Element Queue could trigger a
callback (for example, left document) which would consult the map
during deletion. This is indicated by the callstack of crash
c17917111eee9142, however it was not possible to reproduce this crash.

BUG=266737
R=dglazkov@chromium.org

Review URL: https://codereview.chromium.org/22521003

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