-Add: Versioning for the network protocol.

This still needs a fair bit of testing....
-Fix: set default value for struct fields.
-Fix: instantiate extra if not passed.
-Change: set the admin protocol's default_version.
-Fix: we don't pass extra data to the field readers.
-Add: simple test case for versioned packets.