crypto: fix excessive buffer allocation

Allocate buffer only if the next one isn't free.
crypto: do not deallocate embedded buffer
crypto: ensure that read head is always non-empty
crypto: clear error on return in AddCRL
process: abstract out HandleToStream

Originally contributed by @tjfontaine, but modified to be faster and
more generic.
stream_wrap: introduce StreamWrapCallbacks

StreamWrapCallbacks is a helper class for incepting into uv_stream_t*
management process.
tls_wrap: embed TLS encryption into streamwrap
tls: introduce TLSSocket based on tls_wrap binding

Split `tls.js` into `_tls_legacy.js`, containing legacy
`createSecurePair` API, and `_tls_wrap.js` containing new code based on
`tls_wrap` binding.

Remove tests that are no longer useful/valid.
tls: share socket._hadError with http_client
cares: fix uninitialized variable warning

Suppress the following warning:

  ../../src/cares_wrap.cc: In function ‘v8::Handle<v8::Value>
  node::cares_wrap::SetServers(const v8::Arguments&)’:
  ../../src/cares_wrap.cc:1017:5: warning: ‘uv_ret.uv_err_s::code’
  may be used uninitialized in this function [-Wuninitialized]
stream_wrap: fix signed/unsigned comparison warning
doc: Correct TLS deprecation notices
tls: session API returns
readline: strip ctrl chars for prompt width calc

Use regular expression to strip vt ansi escape codes from display when
calulating prompt display width and cursor position

Fixes #3860 and #5628.
build: add android support

Resolves minor discrepancies between android and standard POSIX systems.
In addition, some configure parameters were added, and a helper-script
for android configuration. Ideally, this script should be merged into
the standard configure script.

To build for android, source the android-configure script with an NDK
path:

    source ./android-configure ~/android-ndk-r8d

This will create an android standalone toolchain and export the
necessary environment parameters.

After that, build as normal:

    make -j8

After the build, you should now have android-compatible NodeJS binaries.
build: fix include order for building on windows

fallout from the tls_wrap feature landing
doc: call console module 'console' not 'stdio'

The console module has always been called 'stdio' in the
table-of-contents, but nowhere else, since its name is
'console'. This makes it difficult to find.
src: clean up `using` directives

Remove the unused ones and alphabetically sort the ones that remain.
stream_wrap: remove bogus assert

Libuv may provide a NULL buffer to the uv_read callback in case of an
error, so with this assert we'd be using the api incorrectly. None of
the current DoRead implementations rely on this constraint, either.
doc: cleanup addons docs for 80 char lines