Added changes to Netty pipelines to support SSL/TLS. Fixes #1978

1) Netty server and client pipelines updated to conditionally load keystore/truststore if SSL is enabled in the config
2) Supports any available encryption protocol via 'ssl-protocol'
3) Supported encryption algorithms are specified via 'ssl-encryption-protocol' config key
Added changes to Netty pipelines to support SSL/TLS. Fixes #1978

1) Netty server and client pipelines updated to conditionally load keystore/truststore if SSL is enabled in the config
2) Supports any available encryption protocol via 'ssl-protocol'
3) Supported encryption algorithms are specified via 'ssl-encryption-protocol' config key

Conflicts:

	akka-remote/src/main/scala/akka/remote/netty/Client.scala
	akka-remote/src/main/scala/akka/remote/netty/Server.scala
	akka-remote/src/main/scala/akka/remote/netty/Settings.scala
Reverted changes to client and server files and moved the code to NettySSLSupport.scala
Updated configuration file to reflect new netty.ssl hierarchy.
Merge branch 'ticket_1978' of github.com:dev10/akka into ticket_1978

Conflicts:
	akka-remote/src/main/resources/reference.conf
	akka-remote/src/main/scala/akka/remote/netty/Client.scala
	akka-remote/src/main/scala/akka/remote/netty/Server.scala
	akka-remote/src/main/scala/akka/remote/netty/Settings.scala
Updated to support 3 different random number generators:

1) SecureRandom supported by Java (default)
2) SHA1PRNG (causes problems on Linux)
3) Various versions of the AES Counter RNG (faster than default at generating random data)
Used RemoteCommunicationSpec as a template to implement a functional spec to test SSL communication.

1) Converted provider and related RNG's from Java to Scala
2) Added trust/key stores for testing purposes
3) As stated in the test comments, Internet access is required for the 2 'Secure' RNG variants to function within the time limit.
4) Fixed unnecessary imports
#2156 - sbt plugin: project dependencies should be included automatically
Proposal to make it possible to fully discard the receive and replace it with become, unbecome then reverts to receive if no behavior left
Formatting
Caching emptyBehaviorStack and remove all other uses of Stack.empty
Removing a pointless import and the only Scala return statement in our codebase
#2217 - setting accessible = true before newInstance
Skipping immutable.Stack due to questionable implementation, going for immutable.List instead
Removing all uses of immutable.Stack in Akka
Removing horrid IDEA autogenerated section and adding Typesafe copyright to NonPublicClass.java
Review fixes
Switching to getDeclaredConstructor.newInstance as a fallback
Merge pull request #476 from dev10/ticket_1978

Added changes to Netty pipelines to support SSL/TLS. Fixes #1978
Correction of gossip merge when joining, see #2204

The problem:
* Node that is Up joins a cluster and becomes Joining in that cluster
* The joining node receives gossip, which results in conflict,
  merge results in Up
* It became Up in the new cluster without passing the ordinary leader
  action to move it to Up

The solution:
* Change priority order of Up and Joining so that Joining is used when
  merging
Use max of periodic-tasks-initial-delay and the interval