consensus lib work: Separate protocol versioning from clientversion

As subject implies. Libs need to be aware of the protocol version. Together with #5162, this is the last of the big code movement for the lib for 0.10.

This is move-only. Git even detects the file movement, so this one is easy enough to verify via the web interface.