Desperately trying to piece it together

There's been a lot of arguing over whether or not "read" and "write" within
a channel should be moved into the more general category of
operations acting on channels. Eventually, it was decided this
was probably too confusing for a user, and would complicate
things a bit.

Another long line of debates was over asynchronous channels / buffered
channels, and whether or not a more general asynchronous write
operation should be supported. While it turned out this was broadly
possible, it would be inefficient and an alt would then need commands
to read/write/asynchronously write. I felt that list could grow,
so we've gone with a specific buffered / asynchronous channel.

A lot of discussion also took place on how to enable alts to play well
with asynchronous channels. The only way so far that we've come up with
is to spawn a new thread to respond to a writer immediately. (The idea
of having a list of dummy readers was also appealing, although whether
or not this would break protocol is hard to determine right now...)

--HG--
rename : src/test/java/com/softwire/it/cjo/utilities/FIFOQueueTest.java => src/test/java/com/softwire/it/cjo/channels/FIFOQueueTest.java
updating save
Major rethink on channel structures. Got OneOne, ManyOne, OneMany, ManyMany

Read and write will be operations on channels. Operations
interact through registration, but when exactly registrations
are responded to is controlled by the channel.

This removes some of the complexity from channels and operations
at the same time!!

--HG--
rename : src/main/java/com/softwire/it/cjo/channels/Channel.java => src/main/java/com/softwire/it/cjo/operators/Channel.java
rename : src/main/java/com/softwire/it/cjo/channels/ChannelReader.java => src/main/java/com/softwire/it/cjo/operators/ChannelReader.java
rename : src/main/java/com/softwire/it/cjo/channels/ChannelWriter.java => src/main/java/com/softwire/it/cjo/operators/ChannelWriter.java