=act #15488 Removed guard around _logLevel

This patch removes a lock around the getter of _logLevel. The setter is
still guarded for consistency. Note that out of thin-air reads, while
not excluded under the current JMM, are forbidden by current hardware.

Signed-off-by: Duarte Nunes <duarte.m.nunes@gmail.com>
+per #13815 akka-persistence-tck based on @krasserm's work

Original here: https://github.com/krasserm/akka-persistence-testkit

New features:
* merged martin's tests
* usable from java (junit 4)
* simple bench test, which helps checking if ordering is perserved under
  bigger workloads and simple perf checking
* does NOT include tests for already deprecated features (deleteMessages)
* docs

Resolves #13815

Conflicts:
	project/AkkaBuild.scala
Merge pull request #15527 from ktoso/port-persistence-tck-ktoso

+per #13815 akka-persistence-tck based on @krasserm's work
+doc #15537 add Typed router pattern

Conflicts:
	akka-docs/rst/scala/code/docs/persistence/PersistenceDocSpec.scala
Merge pull request #15541 from ktoso/port-doc-typed-router-ktoso

+doc #15537 add Typed router pattern (for validation)
Merge pull request #15481 from duarten/master

Removed guard around _logLevel
=doc #15543 link to persistence in java docs should point to java persistence
Merge pull request #15549 from ktoso/port-fix-java-persistence-link-ktoso

=doc #15543 java docs should link to java persistence (for Validation)
=act #15488 add @volatile logLevel, and benchmark

Summary:
* made `logLevel` @volatile
* Perf benchmark and results are attached.

Please review @viktorklang
Merge pull request #15553 from ktoso/port-volatileLogLevel-ktoso

=act #15488 add @volatile logLevel, and benchmark (for validation)
=act #13970 Send transistion on goto(CurrentState) in FSM

When in `A`:
* `goto(A)` will trigger `onTransition(A -> A)`
* `stay()` will NOT trigger `onTransition`

Includes:
* migration guide
* docs updates
* test
Merge pull request #15561 from ktoso/master

=act #13970 Send transistion on goto(CurrentState) in FSM
!act #13490 Changed the callback to SocketOption to accept a channel instead of a Socket, this allows for using the nio features.

For example in Java 7 you can now join a multicast group:

case class JoinGroup(group: InetAddress, networkInterface: NetworkInterface) extends SocketOption {

  override def afterConnect(c: DatagramChannel): Unit = {
    c.join(group, networkInterface)
  }
}

  IO(Udp) ! Udp.Bind(self, new InetSocketAddress(MulticastListener.port),
    options=List(ReuseAddress(true),
      JoinGroup(MulticastListener.group, MulticastListener.interf)))

Other minor changes:

 - changed all methods in SocketOption to take a Channel instead of a Socket.  The socket can be gotten from the Channel but not the reverse.
 - all methods that are called before the bind are now called beforeBind for consistency.
 - All network connections now call the beforeBind and afterConnect.
=per #15575 lessen timing issue in AtLeastOnce spec

* lower redelivery interval does not change semantics here (no one
  answers anyway), and lessens the changes to be "unlucky" with gc pauses
* was unable to reproduce error with snapshotting in 80 builds on
  jenkins. Brainstormed possible errors but not found yet..
=per #15559 use the same config as all other peristence tests

* this includes the default expect timeout of 10s (instead of 3s)
=con #15574 impr TimerBasedThrottlerSpec stability

* the lower bound was rather racy, depends on "where in it's Tick"
  time the throtteler currently was. In general the upper bound is also
  not exact, but "good enough" because the `.5` is an estimation of "the
  throtteler must finish it's previous tick, and then it sends the data"
Merge pull request #15586 from ktoso/forward-port-test-hardedning-ktoso

For Validation, 3 test hardening commits from release-2.3
Merge pull request #15568 from HawaiianSpork/socketOptionAfterConnect

!act #13490 Changed the callback to SocketOption to accept a channel instead of a Socket, this allows for using the nio features.
=act #15572 don't read recursively in pullMode when a complete buffer was read
Merge pull request #15573 from spray/w/fix-TCP-pull-mode

=act #15572 don't read recursively in pullMode when a complete buffer was read