Merge branch 'thio' into io-mk3
Wrap some of the more obscenely long function declarations in IO systems.
Some parameters in IO systems were already declared final; let's apply that consistently across the board.
InputSystem and OutputSystem had converged on different naming conventions; I like the one from IS better, so switching OS to it.
Make InputSystem and Output system try to be helpful if they are handed channels in blocking mode; if they fail to switch the mode the nonblocking, they'll still throw IllegalArgumentException (the IOException from trying to switch modes will be wrapped as its source; if you're worried about this, enforce the blocking mode yourself before making IO systems, and also notice that AHSlib connection factories will always default to nonblocking modes which usually makes this all a nonissue).
OutputSystem worker implementation needs to prod its scheduler if it receives new message chunks for writing.
Noticed a mismatch between the docs on OutputSystem worker implementation's $buffered variable and the return description of ChannelWriter.write(), and that I needed to add that inversion to the code as well.
Create IOSystemTest.  It covers OutputSystem and InputSystem together.  There's only one unit right now; it tests just basic binary framing and transports a single message, but it's working on a TCP connection with selectors and threads, so in that regard it's pretty serious.
Some comments about future ChannelWriters.
OutputSystem implementations using selectors should only try to deregister write interest if they registered it sometime in the past.
Switch the IOSystemTest to use a SelectionSignaller with a default timeout.

Using a zero means that it can only be stopped by firing off interrupts, which stopping a scheduler currently doesn't do.
There's another option for getting the SelectionScheduler to stop nicely: have the cleanup method call cancel on the SS's WorkFuture before trying to stop the scheduler.  I like this better; switching back to the SelectionScheduler mode with no periodic timed wakes.
Merge branch 'thio' into io-mk3
Drop old test code.
add logging statements to cleanup for tests in IOSystemTest.  we've got a race condition in cancellation of a SelectionSignaller to chase down.
Adding Loggar, a bridge of slf4j loggers that makes it possible to use them inside asserts.

Using this, it should be possible for a jvm to inline out logging statements as completely as when using compile-time logging settings that definitively resolve to falses, but you can still decide whether or not to use logging (even to class resolution) by using the -ea and related flags when starting your program; then slf4j takes over with the granularity and logging levels after high level on/off switch.
Introduce logging to IO system implemenations.
So, this is fun.  I think the selection bug is actually a JVM bug; unless I've missed something in my reading here, this code demonstrates that when a thread is interrupted before going into the wait on a selector, the selector fails to wake up properly.  Checking thread interrupted status before calling the selection methods is obviously insufficent to correct this and would be begging for a race condition.  So... apparently trying to do selects without a timeout is unsupported.  Unsupportable, even.
Javadoc on a test
Trying to reproduce the bug I described a few commits ago in more simple circumstances with just the Selector and interrupting the thread... and I can't do it.