Use inproc ZeroMQ sockets for in-shard comms.

This has the happy benefit that for connections within a shard, there's
no longer any communications between shards. That is, a message flowing
A->B->C (where a shard contains A, B, and C) will always remain on that
shard, not possibly move to another shard because there are IPCs between
components.

We don't need to namespace the inproc sockets with anything other than
connection UUID, because there will only be one copy of any connection
within any given shard, and each shard will gets own copy of the inproc
socket.
Bind one-to-many connections on the cardinality-1 side.