crimson/net: implement accepting/connecting states
- introduce the new accepting/connecting connection states.
- return ConnectionRef immediately when connect().
- manage the ownership of the accepting connections.
- manage the ownership of the registered connections.
- encapsulate a Socket class because it is not created when constructing
a SocketConnection, and allow it to be replaced in the future.
- refactor related interfaces.