Updates to the Queue tests.
A better performance test workaround for the GCD channels.
Added less generic versions of the '<-' operators for Sender and Receiver.

They're less generic in that they match Sender and Receiver, rather than their protocols. This does make a difference, speed-wise.

Also made all versions not rely on 'inout', since they do not (strictly) mutate their target. The compiler should really be smart enough to do this correctly at optimum speed.
Eliminated spurious 'final' declarations.

Added a non-spurious one.
Put a mutex back in to 'SimpleChannel', because without it the 'BlockedReceiver' test occasionally fails.

Same reason as in revision '5634022', obviously.

Used the OSSpinLock calls from libkern/OSAtomic.h, since all the protected operations are very brief, and a thread going to sleep there would generally be worse than spinning. The two semaphores ('filled' and 'empty' are there to manage thread sleep in any event. OSSpinLock is slightly faster than dispatch_semaphore_t in the no-contention case.
Use 'if let' in 'SemaphorePool', because 'if let' is not slow in that context

The previous version left a small window open for a race condition leading to dereferencing nil. This version should be impervious to this.
Substituted OSSpinLock for dispatch_semaphore_t as a mutex variable type in the qchan and schan classes

It is a small win, but it still does not allow 'QBufferedNChan' to comprehensively outperform its pthreads equivalent.
The performance gap under thread contention between 'QBufferedNChan' and 'SBufferedChan' is puzzling, since their no-contention cases are about equally good.