Implement DOMWrapperWorld::DOMObjectHolder

We sometimes need to keep a DOM object X alive while a V8 object Y is alive.
If Y is a wrapper of X and we want to create only one wrapper for X,
we can just use DOMDataStore. However, in some rare cases this condition
doesn't hold, and in that case we need a separate mechanism.

InjectedScriptManager is one example, and it implements manual lifetime
management using InjectedScriptManager::CallbackData.

This CL generalizes the mechanism and move it to DOMWrapperWorld::DOMObjectHolder.
This is because I want to use the mechanism for ThenFunctions in serviceworkers/.

The semantics of DOMWrapperWorld::DOMObjectHolder is as follows:

- By calling DOMObjectHolder::create(T* object, Handle<Object> wrapper),
you can create a holder that keeps the |object| alive as long as
(1) the |wrapper| is alive or (2) the DOMWrapperWorld which the |wrapper| belongs to
is disposed.

- By calling DOMWrapperWorld::registerDOMObjectHolder(DOMObjectHolderBase* holder),
you can ask the DOMWrapperWorld to manage the lifetime of the holder.

BUG=340522

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

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