Refined the interface further. The same API is used for both incoming and outgoing connections.
Used InboundLink and OutboundLink to maintain symmetry.
Added a default implementation with basic IO.
Added support for logging, threading ..etc.