=doc #3986 Slight updates in wording on cluster singleton docs
Fixes #13983

Two changes have been made:
- In AkkaBuild, forced using UTF-8 to verify HTML files containing
  diagrams
- In the documentation chapter Building Akka, added a section clarifying
  the Graphviz dependency of generating Scaladoc Content Hierarchies

These fixes eliminates the issues I faced while building Akka on Windows
with NetBeans. The first issue is a Windows specific issue where the
default charset cannot be UTF-8. The second is Windows related in the
sense that Graphviz, the optional dependency of Scaladoc, had to be
manually resolved.
+con #3972 Make Distributedpubsubmediator support consumer group

1. allow Topic have children topics, which are the groups
2. when publish with sendOneMessageToEachGroup flag, it will send to one
actor each group
Updates in the Building Akka documentation page in
accordance with the discussion with @bantonsson
Merge pull request #2115 from cowboy129/master

+con #3972 Make Distributedpubsubmediator support consumer group
=act #3623 unsubscribe when actors terminate, instead of `isTerminated`

* Moved to removing actors proactively when they are terminated instead of
  checking `isTerminated` during publish.
* Subscribers which have registered before initializing the unsubscriber
  will be aggregated in a Seq until one is registered and then it will
  take responsibility of unregistering them on termination.
* Initialization of the unsubscriber can only be run once - attempting
  to initialize the event stream with another unsubscriber will fail,
  and init will return false.
* Assumed having an init (mutable) method on the `EventBus` is fine, as
  it has such methods already and @patriknw's comment in the task for
  this.
* since we must check if the subscriber has any subscribed channels left
  we had to expose this detail from SubchannelClassification via
  `hasSubscriptions`. Increases cost of ubsubscribe(actor, channel) a bit.
* Evacuated the expensive `hasSubscription` call out of eventstream's `unsubscribe` call, and instead making the Unsubscriber check this before it stops watching an actor. If in the mean time the same actor got subscribed, there will be a new Subscribe message emited - so we're good on that side. Also, if it would terminate before the unsubscriber gets the Register message it will call `watch(actor)` on a dead actor, which results in getting Terminated for it, thus we'll stop watching it from the Unsubscriber as expected.

Final squash and small cleanup. Please review again;
=sam Update version numbers to 2.4-SNAPSHOT
Fixed a typo
Merge pull request #15020 from sslavic/patch-1

=doc fixed a typo in remoting docs
=sam #15028 Change reference from java file to scala file
Merge pull request #15029 from kpfell/15028-akka-sample-cluster-scala-tutorial-fix

=sam #15028 Change reference from java file to scala file
Merge pull request #15008 from ktoso/3986-cluster-singleton-may-become-doubleton-during-splits-ktoso

=doc #3986 Slight updates in wording on cluster singleton docs
=pro Update test dependencies to Scala 2.11 cross published versions
Merge pull request #15019 from akka/wip-update-sample-version-numbers-ban

=sam Update version numbers to 2.4-SNAPSHOT
=pro #15045 Adjust build for Scala 2.11.0

* Forward port of 2b891e7
Merge pull request #15047 from akka/wip-update-test-dependencies-master-ban

=pro Update test dependencies to Scala 2.11 cross published versions
Merge pull request #15011 from csomogyi/master

Fixing minor issues I found while building Akka on Windows
=pro Remove unused dependency version
Merge pull request #15051 from akka/wip-remove-unused-dependency-version-ban

=pro Remove unused dependency version
=rem #13960 #13989 #13742 #13985  Optimize EndpointWriter

* Replace stash with internal bufferi, j.u.LinkedList
* Replace FSM with become
* Adaptive backoff, important to backoff, but not for too long,
  depends on environment and use case
* Prioritize heartbeat messages from remote watcher and cluster
  failure detector
* Use payload messages as heartbeats for transport failure detector,
  change transport failure detector to be based on absolute timeout,
  see ticket #13989 and #13742
* Log remote disassociate from transport failure detector,
  see ticket #13985
* Add benchmark sample in akka-sample-remote-scala