Socket draft

created code to implement the protocol. added an additional layer of abstraction (the SocketWrapper and SocketWrapperListener classes) which will hopefully make it easier to test these classes. new spec is in the design doc.

code compiles, but probably doesn't run.

@mycal-tucker @peter828