msg/async: preserve peer features when replacing a connection
The features are now stored in the protocol implementation. When we replace
an existing connection, copy those features so that our connect_msg_reply
calculates the correct features for the session.
This fixes an issue where a 3-mon cluster, after upgrading the two followers
but not the leader, was unable to include the (luminous) leader in the
quorum because it was seeing missing features in the connect reply, because
the new mons were replacing an old instance of the connection and weren't
copying the features, and that old instance had connect_msg.features == 0.
Add some debug lines that helped (finally) identify the problem.