node: add HandleScope to prevent memory leak

MakeCallback can only be called from a valid v8::HandleScope.

Fixed #6487
tls_wrap: move members to initialization list

They didn't need to be defined in the body of the constructor.
async-wrap: make typename's consistent
base-object: add BaseObject

BaseObject is a class that just handles the Persistent handle attached
to the class instance.

This also removed WeakObject. Reordering the inheritance chain helps
prevent unneeded calls on instances that don't call MakeCallback.
src: add comments about implicit dependencies
async-wrap: add support for done callbacks