Make cluster fault handling more robust, see #3030

* ClusterCoreDaemon and ClusterDomainEventPublisher can't be restarted
  because the state would be obsolete.
* Add extra supervisor level for ClusterCoreDaemon and
  ClusterDomainEventPublisher, which will shutdown the member
  on failure in children.
* Publish the final removed state on postStop in
  ClusterDomainEventPublisher. This also simplifies the removing
  process.
(cherry picked from commit cab78e517419cb762fb6b877427be9b97eb334a3)

Conflicts:

	akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala
Nodes not part of cluster have marked the Gossip as seen, see #3031

* Problem may occur when joining member with same hostname:port again,
  after downing.
* Reproduced with StressSpec exerciseJoinRemove with fixed port that
  joins and shutdown several times.
* Real solution for this will be covered by ticket #2788 by adding
  uid to member identifier, but as first step we need to support
  this scenario with current design.
* Use unique node identifier for vector clock to avoid mixup of
  old and new member instance.
* Support transition from Down to Joining in Gossip merge
* Don't gossip to unknown or unreachable members.
(cherry picked from commit b349ad8d872e0c91ffaa5c4cf261e0d1fa68fa64)

Conflicts:

	akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala
	akka-cluster/src/test/scala/akka/cluster/GossipSpec.scala
Fix ClusterDomainEventPublisherSpec, see #3041

* MemberRemoved is now published in postStop of ClusterDomainEventPublisher
* No need to shutdown the publisher in the test
(cherry picked from commit aad95c7e695449c3d2fc6b83c4b475e85b005172)
Merge pull request #1130 from akka/wip-3030-cluster-fault-handling-2.1-patriknw

Backport of ticket #3030 and #3031