Connect component inputs before outputs.

Aiming toward using ZeroMQ in-proc sockets for in-shard connections.
Unlike other ZeroMQ sockets, inproc sockets require 'bind' to be called
strictly before 'connect', so iterating and starting ports by component
is not going to work. We need to get all the input ports binding before
we get the output ports connecting.
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.