Fix race condition between encoder creation and io::poll in SocketManager::Send(Message).
Use std::shared_ptr to do reference counting for libprocess rather than manually doing it.
Add connect() to the socket interface.
Remove dead connection code in process.cpp.
Add read() to socket interface. Use it in process' accept().
Use socket.read() for ignore_data in process.cpp
Introduce enumeration in Encoder to distinguish between data and file encoders.
Virtualize backup(length) and remaining() in Encoder interface.
These are top level concepts implemented by both data and file encoders.
Introduce socket.send() and socket.sendFile(). Use them for linked sockets.
Use Socket send for temporary connections. remove send_data and send_file code.
Add bind(), listen(), and accept() to Socket interface. Use these in process.cpp.
Fix a race between SocketManager link() and send().