Java Pattern - Exception propagation in actor hierarchy using supervision

Ticket #2605
Applied discussion results to implementation and documentation.

- renamed to SupervisedAsk.askOf
- watches for actor termination
- askOf returns Future
- intermediate actor used to prevent actor system bottle-neck
- timeout handling
Initial work of adaptive metrics aware routers, see #2547
ClusterLoadBalancingRouter and refactoring of metrics, see #2547

* MetricsSelector, calculate capacity, weights and allocate weighted
  routee refs
* ClusterLoadBalancingRouterSpec
* Optional heap max
* Constants for the metric fields
* Refactoring of Metric and decay
* Rewrite of DataStreamSpec
* Correction of EWMA and removal of BigInt, BigDecimal
* Separation of MetricsCollector into trait and two classes,
  SigarMetricsCollector and JmxMetricsCollector
* This will reduce cost when sigar is not installed, such as
  avoiding throwing and catching exc for every call
* Improved error handling for loading sigar
* Made MetricsCollector implementation configurable
* Tested with sigar
AdaptiveLoadBalancingRouter and more refactoring of metrics, see #2547

* Refactoring of standard metrics extractors and data structures
* Removed optional value in Metric, simplified a lot
* Configuration of EWMA by using half-life duration
* Renamed DataStream to EWMA
* Incorporate review feedback
* Use binarySearch for selecting weighted routees
* More metrics selectors for the router
* Removed network metrics, since not supported on linux
* Configuration of router
* Rename to AdaptiveLoadBalancingRouter
* Remove total cores metrics, since it's the same as jmx getAvailableProcessors,
  tested on intel 24 core server and amd 48 core server, and MBP
* API cleanup
* Java API additions
* Documentation of metrics and AdaptiveLoadBalancingRouter
* New cluster sample to illustrate metrics in the documentation,
  and play around with (factorial)
Merge branch 'master' into wip-2547-metrics-router-patriknw

Conflicts:
	akka-actor/src/main/scala/akka/actor/Deployer.scala
	akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala
	akka-cluster/src/test/scala/akka/cluster/MetricsCollectorSpec.scala
Incorparate review feedback, see #2547

* case object and case class for MixMetricsSelector
* Rename decay-half-life-duration to moving-average-half-life
* Clarification of decay-half-life-duration and collect-interval
* Removed Fields, Java compatibility issue
* Adapt for-yield variables
* Comment metrics collector constructor that takes system param
* Don't copy EWMA if not needed
* LogOf2 constant 0.69315
* Don't use mapValues
* Remove RichInt conversion
* sigar version replace tag in docs
* createDeployer factory method to make it possible to override
  deployer in subclass
* Improve readability of MetricsListener (in sample)
* Better startup of factorial sample (no sleep)
* Many minor enhancements and cleanups
Incorparate more review feedback, see #2547

* negative double check
* correction of cluster specification
* add isEmpty in WeightedRoutees
Fix failing WeightedRouteesSpec, see #2547
Add Typesafe repo in cluster sample, for sigar, see #2547
#2717 - Fixing the backoff strategy in PojoSRTestSupport
#2717 - Changing names of the PojoSR constants to be more Scala-like and switching to FiniteDuration instead of Long
Attempting to hunt down and find the race in the RoutingSpec
Simplifying the code inside Children and RepointableActorRef
Attempting to hunt down and find the race in the RoutingSpec
#2720 - Adding OSGi manifest to testkit
#2729 - Removing uses of Future.either in favor of firstCompletedOf
#2719 - removing deployReadme from Dist task since it isn't used or needed.
add ActorRefProvider.getDefaultAddress, see #2732

- use it in ConsistentHashingRouter instead of relying on
  provider.rootPath.address
- remove transport.address from RemoteActorRefProvider.rootPath
clarify internal nature of ActorRefProvider impls