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