Propagate "EOF" error as io.EOF

When the WriteCloser of a channel is closed, the Reader receives an "EOF" error that is not equal to io.EOF. This makes ioutil.ReadAll return an "EOF" error even though it's [documentation](http://golang.org/pkg/io/ioutil/#ReadAll) says, it should not do so.

A demo for this problem is available [here](https://github.com/fourcube/circuit_eof).