implement sclang sockets via boost.asio & move ReplyAddress out of the public interface

this patch series has two aspects:

* a it moves the definition of ReplyAddress out of the public interface, making it an opaque pointer. the original implementation pulled in too many platform-specifics, which was not really necessary.

* the sclang socket implementation is replaced by boost.asio, which has the advantage of (a) begin portable so platform-specific code could be removed and (b) greatly simplifies the threading. as it requires only one thread.