Added an implementation of BufferedChan that uses a circular buffer rather than a linked list as its backing store.

In principle, this should be faster than the linked list; nearly as fast as Buffered1Chan, even.
A compiler or library bug prevents this, however.

Also:
- moved the override of "var capacity" down to the subclasses of BufferedChan. It never had business being where it was anyway.
- simplified the initializer structure for BufferedChan and children