Implement send/waitForSend recv/waitForRecv as transactions
Implement send/waitForSend recv/waitForRecv as transactions

The select statement send/recv to be a transaction. For each
case select will run the communication and will be returned a
closure that can tell the communication to proceed or not. This
will enable multiple communications to be available, yet select
will only allow one to proceed, at random of course.

ghthor/SwiftChan,ghthor/SwiftChan