cluster: use const for preselect.
cluster: track wire version on a per-node basis.

This uses the wire version for the given node to determine how we should
send data before we've sent it. This will allow us to handle the new
write commands more accurately without the "cluster negotiaion" which
was less than ideal.