Oilpan: Move MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor
to oilpan's heap

- MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor must be moved
to oilpan's heap in one go because their lifetime are tightly coupled.

- Removed m_descriptor->setClient(0) from MediaStream's destructor. This is OK
because MediaStreamDescriptor has a strong Member back to the Client
(i.e., MediaStream).

- Removed m_component->source()->removeObserver(this) from MediaStreamTrack's
destructor. This is OK because this CL made the observers weak
(i.e., MediaStreamSource::m_observers is a hash set of weak members to
MediaStreamTrack objects).

- Removed WebMediaStreamTrack::ExtraData::m_owner because it's unused.

- Introduced MediaStreamComponentDisposer to delay the destruction of
MediaStreamComponent::m_extraData. The ExtraData is exposed to the web
and some Chromium objects inherit from the ExtraData. If we clear the
m_extraData in the MediaStreamComponent's destructor, those Chromium-side
objects are also destructed in the MediaStreamComponent's destructor.
This is problematic because the destructors of the Chromium-side classes
can touch other on-heap objects in the Blink side. To avoid the issue,
we need to delay the destruction of the ExtraData to thread-specific
weak processing. The disposer pattern actually makes the deletion of
the extra data happen earlier and not later. The disposer makes sure
that the extra data is destructed in weak processing which is run before
sweeping and therefore all the objects are still alive and can be touched.


- The same problem arises for MediaStreamDescriptor and MediaStreamSource.
This CL adds MediaStreamDescriptorDisposer and MediaStreamSourceDisposer.

- This CL depends on https://codereview.chromium.org/543603003/ and https://codereview.chromium.org/549153002.

BUG=340522

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

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