vm: make ContextifyContext a BaseObject
src: refactor BaseObject methods
- Wrap the initialization of the kSlot and kEmbedderType fields into a BaseObject::SetInternalFields() method.
- Move the tagging of kEmbedderType field into BaseObject::TagNodeObject()
- Add a variant of BaseObject::MakeLazilyInitializedJSTemplate() that only needs IsolateData. This makes it easier to create BaseObject subclasses.
benchmark: add vm context global proxy benchmark
vm: make ContextifyContext a BaseObject
Instead of adding a reference to the ContextifyContext by using a v8::External, we make ContextifyContext a weak BaseObject that whose wrapper is referenced by the sandbox via a private symbol. This makes it easier to snapshot the contexts, in addition to reusing the BaseObject lifetime management for ContextifyContexts.