Prototype of cluster aware routers, see #2103

* Several FIXME that needs to be discussed
* ClusterRouterConfig created via ClusterActorRefProvider
Small refactoring to improve resize api
Make it more intuitive for tests using real Cluster(system) extension, see #2103

* We will write more tests that rely on real Cluster(system) extension,
  such as ClusterRoundRobinRoutedActorSpec
* When not using FailureDetectorStrategy or overriding seed nodes
  MultiNodeClusterSpec will use the real Cluster(system) extension
  instead of a new Cluster instance with additional test facilities
Better methods in RouteeProvider

* createRoutees only for new nrOfInstances
* createRoutees also registers
* New registerRouteesFor for path lookup
* removeRoutees to gracefully unregister and stop routee
Deploy to new members in cluster, see #2103

* Config max-nr-of-instances-per-node
* selectDeploymentTarget that takes max-nr-of-instances-per-node
  and nr-of-instances into account
* Deploy when new member added or removed
* Moved routeeProps to RouteeProvider constructor, needed for
  this feature, but also simplifies createRoute, createRoutee,
  and resize, since routeeProps doesn't have to be passed around.
Support programatic declaration of cluster router, see #2103

* Ordinary withRouther withDeploy is TOO ugly for this
* Implicit conversion adds withClusterRouter to Props
  for Scala API
* Helper method in ClusterRouterPropsDecorator for Java API
Unregister routees living on removed node, see #2103
Use the router actor as cluster listener, see #2103

* Removed need for extra actor that subscribes to cluster
  events
* ClusterRouterActor is the router actor and aslo subscribes
* Less scary initialization, and safe calls to createRoutees
* Intercept ClusterDomainEvent to route them to ClusterRouterActor
  instead of to the routees
Fix compilation errro in docs code
Reduce exposure of ActorContext to RouteeProvider

* Introduced RouterContext which is a subset of
  ActorContext that makes sense for RouteeProvider
  to use.
* It's not possible (without major rethinking) to
  create routees by sending message to the Router
  actor because we rely on immediate return of ActorRef
Describe API changes for custom routers in migration guide
Test cluster router deployment config
Organize imports, see #2103
createRoutees also when initial CurrentClusterState is received, see #2103
Prototype of death watch hooked up with failure detector, see #1588

* Probably a lot of things missing, but wanted to try the first idea
* The test is green :)
DeathWatch must only notify when watching, see #1588

* Discard Terminated when not watching the subject
* This will filter eventual duplicates
* Note about the fw case  in Scaladoc of Terminated
* Added description of changed behaviour in migration guide
Maintain AddressTerminated subscription in DeathWatch, see #1588
Direct failed remote sends to deadLetters, see #1588

* When Watch is sent to deadLetters it will generate Terminated
* Test: receive Terminated when watched node is unknown host
* Test: receive Terminated when watched path doesn't exist
Fix NPE due to initialization order, see #2473
Fix leaking this in constructor of Cluster, see #2473

* Major refactoring to remove the need to use special
  Cluster instance for testing. Use default Cluster
  extension instead. Most of it is trivial changes.
* Used failure-detector.implementation-class from config
  to swap to Puppet
* Removed FailureDetectorStrategy, since it doesn't add any value
* Added Cluster.joinSeedNodes to be able to test seedNodes when Addresses
  are unknown before startup time.
* Removed ClusterEnvironment that was passed around among the actors,
  instead they use the ordinary Cluster extension.
* Overall much cleaner design