With these changes, it should now be possible to create alternate serialization (e.g. Gson or native) and transports (like HTTP).
To make this PR reviewable I decided against creating new modules right now. That can be done subsequently in another PR that doesn't modify any code.
* Creates two new interfaces: `TransportManager` and `ProtocolManager`
* Implementation classes must honor a common constructor interface
* Includes UDP and Jackson implementations of those.
* `AbstractTransportManager` has a lot of boilerplate that includes:
* starting the active gossiper, and
* starting the passive gossiper.
I spent some time trying to polish the implementations to become less dependent on references to `GossipManager`. I still feel there is a lot of room for improvement.