Separate client server

Hi Dominic, this version is not fully tested, but seems working so far. The test codes are probably out-of-date. I will update it tomorrow.

One question about TCP socket in library, the Send and Recv will return even they only sent or recv partial data (which is normal in Stream socket), I assume you want the customer code to handle partial recv/send? I think it would be nice to have some version of send/recv to guarantee send/recv desired amount of data. I implemented my own version in mp_common.cc.