Extract and wrap existing message serialization

Extracted existing message serialization and deserialization into a
single abstraction to allow the serialization strategy to be easily
replaced (in preparation for supporting message versioning)
Initial Message Versioning Support

Implement the initial bits required to support message versioning
including a new IPublishDeclareExchangeStrategy and a new
IMessageSerializationStrategy. Note: Tests are only stubs ...
Clean up and add tests

Cleaned up the versioning code, extracted some additional functionality
into separate types, added unit tests and fixed a few bugs.
Extract and wrap existing message serialization

Extracted existing message serialization and deserialization into a
single abstraction to allow the serialization strategy to be easily
replaced (in preparation for supporting message versioning)
Initial Message Versioning Support

Implement the initial bits required to support message versioning
including a new IPublishDeclareExchangeStrategy and a new
IMessageSerializationStrategy. Note: Tests are only stubs ...
Clean up and add tests

Cleaned up the versioning code, extracted some additional functionality
into separate types, added unit tests and fixed a few bugs.
Updated MessageVersionSupport with latest changes from upstream.
Formatting fixes

Tabs to spaces and removed underscores.
Updated version number
Merge pull request #214 from randomcodenz/MessageVersionSupport

Message version support