Initial implementation

The module will be used by `Workspace.start` - see https://github.com/strongloop/loopback-workspace/pull/147

/to @ritch please review
I think if the connect times out, the socket will be leaked. The connection should be destroyed in all branches where finished is set to true.