node: add HandleScope to prevent memory leak

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

Fixed #6487
src: fix Environment::GetCurrent() usage

Create a HandleScope before calling the Environment::GetCurrent() that
takes a v8::Isolate* as an argument because it creates a handle with
the call to v8::Isolate::CurrentContext().
src: remove global HandleScope

Make it more difficult to accidentally leak handles by removing the
top-level HandleScope.  Now if there's no valid HandleScope now, V8
will complain and, in debug builds, abort.
crypto: fix up implicit HandleScope abuse

Don't depend on any HandleScope objects that may or may not have been
created in src/stream_wrap.cc, create them explicitly.
src: fix Context::Scope usage

env->context() may or may not create a new Local.  It currently does
not but don't depend on that behavior, create a HandleScope first.
src: use Context::Scope objects in cares_wrap.cc

Enter the context explicitly, don't rely on the fact that there is a
Context::Scope a few stack frames below because it may be gone someday
tls_wrap: move members to initialization list

They didn't need to be defined in the body of the constructor.
async-wrap: make typenames 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