+str - Fixes #16065

Adds an IteratorPublisher and IteratorPublisherImpl
Removes the SimpleCallbackPublisher
Switches the callback-source () => Option[T] to use a new ThunkIterator and the IteratorPublisher
Removes the use of a ControlThrowable (Stop) for signalling end since we now use Iterator
Improves a couple of streams-related tests so when they fail we get better output
That's the idiom, also prior art:

╭─[21:02:27] viktorklang@tengil/~/Documents/workspace/akka
( release-2.3-dev: ✘, 2 files changed, 12 insertions(+), 12 deletions(-)
╰─○ grep -r "Iterator.empty.next" .
./akka-actor/src/main/scala/akka/io/Tcp.scala:            case null                  ⇒ Iterator.empty.next()
./akka-actor/src/main/scala/akka/util/ByteIterator.scala:      if (!hasNext) Iterator.empty.next
./akka-actor/src/main/scala/akka/util/ByteIterator.scala:      } else Iterator.empty.next
./akka-actor/src/main/scala/akka/util/ByteIterator.scala:        if (isEmpty) Iterator.empty.next