RingBuffer: make Generator advance the read pointer.

RingBuffer doesn't conform to Collection, so there's actually no reason
to ensure the Generator is multi-pass friendly.

The reference to the buffer is currently strong just because it should
live at least as long as the generator does, and the buffer doesn't
have a reference to the generator, so it's fine.
WorkQueue: remove WorkQueue operators.

Too hard to read as async vs. sync vs. barrier. Bad idea.
RingBuffer: Add a couple protocols for fixed-size queues.

This is mainly to make the operators more general-purpose, so they'll
apply to queues in general rather than just RingBuffer<T>.
RingBuffer: operator <- should be left-associative, default precedence.

This led to some odd syntax issues, so dispensing with
out-of-the-ordinary precedence for this.
RingBuffer: Rewrite operators to take objects conforming to queue protocols.
tests/RingBuffer: fix rewind assertion messages.

Repeated x for y and z.
tests/RingBuffer: Add tests for protocol compliance.
tests/RingBuffer: add test for queue protocol operators.
tests/RingBuffer: remove use of queue operators outside operator test.
tests/RingBuffer: ensure buffer.get() fails when isEmpty is true.
tests/RingBuffer: add tests for buffer.count, buffer.isEmpty, etc.
tests/RingBuffer: Comment for the cluster of protocol conformance funcs.
tests/RingBuffer: break two big tests down into a bunch of smaller tests.

May not have great coverage yet. May never have full coverage because
I'm testing the behavior of the buffer and not really testing its
internals.