Add version_request/reply messaging protocol

Test in test_message_spec.py passes.  No real world test is done yet.

Do we need user visible change (e.g., `%kernelversion` magic)?