Structured Overlay implementation

What needs attention here are the completion handlers and surrounding implementation for the client role and server role. Client role means an outbound connection, while server role means an inbound connection. The functions belonging to each group are marked in PeerImp.h and PeerImp.cpp

Need @JoelKatz and one other person who is not Nik to review this, perhaps @ximinez

In that case, it's irrelevant whether a race is or isn't ok. A race is impossible.