Close connection cleanly after cancelling recv().

Tulip's DataBuffer might not be suitable for our needs.
Replace Tulip's DataBuffer with a simple Queue.

This also lifts the constraints that only one coroutine can read from a
given websocket at a time. It is now legal for multiple coroutines to
call recv() in parallel (even though it looks like a bad idea).

There's yet another API change for waiting until a connection
terminates: yield from ws.worker instead of ws.close_waiter.
Update compliance test to account for API changes.
Avoid duplicate logging.

If a task ends with an exception, and nothing recovers it, Tulip already
logs the exception.
Update documentation.
Update code after the newcancel branch was merged in Tulip.
Small doc improvements.
Account for changes in tasks cancellation.
Use the new create_server API in Tulip.
Make it possible to create a SSL connection.
Validate host names in SSL certificates.
Add tests for SSL connections.
Update docstring as Tulip now supports SNI.

See http://code.google.com/p/tulip/issues/detail?id=74
Shorten user agent.
Add messages to all exceptions.
Minor cleanups
Improve error handling in client and server.
Simplify tests with unittest.mock.patch.
Refactor connection termination.

Take advantage of Tulip's new cancellation model to simplify timeout
handling.
Remove provisional API for subprotocols and extensions.

It was too naive.