Add LifecycleObserver::m_observerType

Before this change, the type of each observer object is told
by the caller, which is error prone: Destructors contains
observerContext(0, type) call, whose |type| value is sometimes wrong.

This change teaches LifecycleObsever about its type on initialization
so that each object can aware of its own type and use it for
type-specific decisions. This approach should be less error prone
because the type is specified only once, at the initialization.

This change also removes ContextLifecycleObserver::m_scriptExecutionContext,
which should point identical object to LifecycleObserver::m_lifecycleContext,
By removing this, the size of ActiveDOMObject won't change even after
we add m_observerType.

BUG=277656
TEST=none, covered by existing test with modified ASAN and the fuzzer.
R=abarth, inferno, tkent

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

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