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.
* remove redundant parameter from method call.
* remove uncessary threadpool.
* Simplify `GossipCore.sendOneWay()`
* Cleanup useage of `MessageInvoker`
* `DefaultMessageInvoker` replaced by a factory
* `MessageInvokerCombiner` replaced by same factory
* Alter `MessageInvokerTest` to not rely on specific types
* Remove type assertion from `GossipManagerBuilderTest`
* Merge `MessageInvoker` with `MessageHandler`
* This required changing method signature return type from `void` to `boolean`.
* add *.ipr to .gitignore
* modify existing pom to be a parent. create new pom for gossip-core.
* I left all properties and dependencies in the parent, as they seemed to be a fairly general set of dependencies.
move all the code.
* rename parent module: gossip -> gossip-parent
* move dependencies into child module