!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
+act #15502: Pluggable DNS resolution in akka-io
+act #13004 Adding TailChopping router
=con #15600 Fix config in PeekMailboxSpec
!scr do not remove tags (github) that are not set on an issue

Since the updated github issues views, it shows all "removed tags",
events in the issue even if the removed tag was never set on the issue.
So this script would always show up as "removed validating,needs-attention"
Even if the issue never had the label needs-attention set to it,
which is confusing visually.

This change introduces that we only remove tags that actually are set on
the issue.
Merge pull request #15369 from kjanosz/tail-chopping-router

+act #13004 Adding TailChopping router
Merge pull request #15602 from ktoso/github-tagging-impr-ktoso

!scr do not remove tags (github) that are not set on an issue
Merge pull request #15417 from hajile/master

+act #15502: Pluggable DNS resolution in akka-io
Merge pull request #15601 from LeonardMeyer/LMeyer-specfix-#15600

=con #15600 Fix config in PeekMailboxSpec
Add abbrev for project changes to CONTRIBUTING.md

As noticed during https://github.com/akka/akka/pull/15617, we didn't hint people to use `=pro` when changing things in the project / build.
=pro #15616 UTF-8 charset and exception with offending file (for Validation)
Merge pull request #15623 from ktoso/port-15616-master-ktoso

=pro #15616 UTF-8 charset and exception with offending file (for Validation)
=doc #15565 improved wording in cluster-usage docs