This is a breaking change as it makes Async a template (e.g. Async<> must be used instead of just Async). When data parameters are provided, an internal mutex and vector is used to hold the parameter packs until the loop runs.
This allows reusing the Tcp object in cases when the connection errors out.
- Provide an EventLoopRunner to run uv::Loop on a separate thread. - Add raw_ostream wrapper for uv::Buffer.