Introduces pseudo quorum writes, moves to synthetic instance ids and fixes concurrent instance startup

Moved from URI as instance identification to an InstanceId class that is based
 on an Integer. Moved server_id from HaSettings to ClusterSettings.
Network instance accepts only one listener and has no need for receiverExecutor
MessageProcessors now form a pipeline that allows for stopping messages
 from going through, via a returned boolean status flag.
Cluster joining has changed. Now a majority of instances need to be reachable
 before the cluster is formed. Also a lot of bugs have been fixed around
 concurrent instance startup.
Renamed ClusterMemberListener.masterIsElected() to
 ClusterMemberListener.coordinatorIsElected()
Adds ClusterMemberListener.memberIsFailed and memberIsAlive()
Fixes in ProposerState. Patches pending instances with the correct set of acceptors
 if cluster configuration changes happen, stop timing out propose on phase1 failures.
AtomicBroadcastState no longer explicitly retries on timeout - it simply
 waits for propose to complete.
Cluster joining can now be explicitly denied via a new joinDenied message.
 That is used for shutting out instances that have a serverId in use.
Adds HeartbeatContextTest and a slight fix in HeartbeatContext revealed by testing
In HA, HAMSM now takes care of receiving memberIsFailed and memberIsAlive events and
 broadcasts PENDING state or does election, respectively, when there is no more quorum

Authored by Rickard Oberg and Chris Gioran
Test cleanup

Moves TestMasterElection into TestPaxosClusterEvents
TestPaxosClusterEvents uses ClusterManager as it should
ClusterManager implements Lifecycle.shutdown(), as it should
ConcurrentInstanceStartupIT uses 3 instances, takes less time and
 less likely to fail
HighAvailabilitySlavesIT properly shuts down ClusterManager
Test cleanup, moves TestItAll master to slave propagation to TestPaxosClusterEvents
Test cleanup and fixes

Removes RobustnessIT, not useful anymore, simulates cronies
Renames TestPaxosClusterEvents to TestBasicHaOperations, more descriptive
TestInstanceJoin and DeletionTest properly wait for all instances before forming a cluster
Fixes cluster forming quorum and some tests

Cluster formation now is actually waited upon until a majority of instances
 is present.
Refactors ClusterManager to properly start databases in separate threads
 so that blocking when waiting for cluster to form does not make tests hang.
Makes ha.initial_hosts setting mandatory and fixes tests that missed it
Reenables commented out InstanceIdTest
Adds mandatory initial_hosts in ForeignStoreIdIT setup code
More fixes around concurrent startup, fixes enterprise server tests