[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)
The github diff is hard to read but it's used here: https://github.com/elasticsearch/elasticsearch/pull/7493/files#diff-b6157c9d93b838bb6020bbab99bfe7b6R399