* Sharded Messenger: provides shared-nothing Messenger for each shard,
it's interfaces are symmetric to be called, any modifications will be
applied to all shards.
* Sharded/non-sharded Dispatcher interface: allow connections to be
dispatched, and related resources (such as Session) to be managed in
its own shard or not.
* Sharded Connection: A connection only lives at one dedicated core
during its lifecycle. It's sharded by its peer_IP in this PoC, because
peer port and nonce are not available when a socket is accepted. While
its interfaces are safe to be called from all shards.
* Replace `boost::intrusive_ptr` by seastar native smart ptrs for
`Connection` and `SocketConnection`, because they need to be
destructed from its original core.
* Unit test: establish multiple connections on both client and server
sides, they runs concurrently and creates sessions that are also
following shared-nothing design.