The problem with `immutable.Traversable` is that it doesn't allow the use of `Seq.apply` for socket options, since `Seq` is aliased to `scala.collection.Seq` and not `scala.collection.immutable.Seq` in `package object scala`. Even though technically nicer `immutable.Traversable` therefore hinders usability of the API, for a benefit that we don't consider worth the cost.
Conflicts:
akka-io/src/main/scala/akka/io/TcpConnection.scala
* dispatch Closed events to the sender of the close command as well
* DirectByteBufferPool changes:
* hide behind BufferPool interface
* only return buffers of the configured size
* reduce work to be done while locked
* use Array-based stack to store free buffers instead of linked lists
* keep buffers by soft reference
The major advantage of this approach is that a Write is only copied once
into its direct buffer and this direct buffer is kept until it is written
fully.