Raise StopIteration when a Channel is closed and empty
Emulate `Enumerator.new` syntax

You can now pass a block to `#initialize`, and it will act like an
`Enumerator`.

```ruby
channel = Going::Channel.new do |ch|
  1000.times do |i|
    ch.yield i
  end
end

channel.next #=> 0
channel.next #=> 1
channel.next #=> 2
channel.each.to_a #=> [3, 4, 5, …, 999]
channel.closed? #=> true
```
Ensure cleanup of Select Statement operations
Add Operation#inspect

Not necessary, but nice.
Use an unbuffered channel
Remove failing spec
Ensure the select statement is cleaned up
Don't init args that aren't needed
Simplify Operation#inspect
Complete under capacity pushes
Dry up code for completing buffered pushes
Dry up code pairing code
Select then complete
Cleanup
Merge pull request #16 from jridgewell/raise-stop_iteration

Raise StopIteration when a Channel is closed and empty
Merge pull request #17 from jridgewell/enumerator-new

Emulate `Enumerator.new` syntax
Merge pull request #19 from jridgewell/ensure-operation-cleanup

Ensure cleanup of Select Statement operations
Allow default case to appear in any order
Fix SelectStatement#wake?
Cleanup