Moved from MMC cleanup to ring buffer

Removed the MMC cleanup protocol for the channel and used
a ring buffer instead for better preforance
Made the alts function more user freindly

Previously the alts function acted like the take or put protocols
returning a boxed value if that was possible or null if the channel
was currently parked.  Now it acts like the take or put functions
callinig the callback if the channel returns immediately
Added simple test suite for csp channels