Set version number to 3.1b1
Catch StreamClosedErrors in WebSocketHandler and abort.

When the stream is closed with buffered data, the close callback won't
be run until all buffered data is consumed, but any attempt to write
to the stream will fail, as will reading past the end of the buffer.
This requires a try/except around each read or write, analogous to the
one introduced in HTTPServer in commit 3258726f.

Closes #604.
Closes #661.
Document websocket error handling change (and StreamClosedError).