Introduce ExecutionContextClient

This extracts most of the virtual functions from ScriptExecutionContext
to newly introduced ExecutionContextClient interface, which Document
and WorkerGlobalScope implement.

ScriptExecutionContext::suspendActiveDOMObjects(),
resumeActiveDOMObjects(), stopActiveDOMObjects() are devirtualized
as there are no overrides of them.

This is a preparation for decoupling ScriptExecutionContext
from Document inheritance chain.

This is re-landing r159421 which was reverted at r159599 due to reported crashes.
This change now have some NULL checks to prevent such crashes.

BUG=305497, 306880
TEST=none
R=haraken@chromium.org
TBR=abarth@chromium.org, dglazkov@chromium.org, tkent@chromium.org

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

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