Prevent unwanted focus change inside mutation event handlers.

This change introduces NodeChildRemovalEventScope so that
we can see whether we are inside inside mutation event handlers.

Using this, this cl let Document::setFocusedElement() inspect the scoping state
to prevent any focus move inside event handlers which can create out-of-document,
invalid focused elements.

BUG=286368
TEST=mutation-details-focus.html
R=inferno@chromium.org,adamk@chromium.org,esprehn@chromium.org

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

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