Make LifecycleContext family parameterized types.

This change turns LifecycleContext into LifecycleContext<T> with
CRTP pattern. This allows a class to implement multiple lifecycle contexts.
For example, Document can have its own LifecycleContext<Document> separated
from LifecycleContext<ExecutionContext> which is implemented in the
superclass ExecutionContext.

This is a part of out-of-Document-ExecutionContext refactoring where
we move ExecutionContext from Document to DOMWindow.
As we already have LifecycleContext, we don't want to mix one
from ExecutionContext when it moves to DOMWindow superclass.

BUG=305497
R=abarth, dglazkov, tkent

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

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