[Discovery] accumulated improvements to ZenDiscovery

This PR contains the accumulated work from the feautre/improve_zen branch. Here are the highlights of the changes: 

__Testing infra__
- Networking:
    - all symmetric partitioning
    - dropping packets
    - hard disconnects
    - Jepsen Tests
- Single node service disruptions:
    - Long GC / Halt
    - Slow cluster state updates
- Discovery settings
    - Easy to setup unicast with partial host list
	
__Zen Discovery__
- Pinging after master loss (no local elects) 
- Fixes the split brain issue: #2488
- Batching join requests
- More resilient joining process (wait on a publish from master)
should we do this in a try / catch fashion? and make sure we call it on all of them?