Add asynchronous event loop.

This new event loop, located in async.py, is a light wrapper around
Tornado's event loop.
Convert Connection to use the asynchronous event loop.

The connection object will now allow for its consumers to register for
events to show up, and will only allow sending of raw strings. No
message intertwining.
Add upgrade to TLS functionality to connection.
Move several constants to features.rfc1459.protocol.
Port client to new event loop-based connection.
Move encoding/decoding of messages to client.
Record raw original message in Message class.
Add message seperator back to message.
Port utils to asynchronous connection.
Merge branch 'master' into async
Merge branch 'master' into async
Fix messages not being parsed properly.
Don't attempt to handle events for which no handlers exist.
Fix throttling code to work properly with event loop.
Remove error callback properly on off_error.
Allow passing an IO loop instance into the constructor for EventLoop.
Merge branch 'async' of github.com:Shizmob/pydle into async
Improve documentation.
Implement creation of tagged messages.
Merge branch 'async' of github:Shizmob/pydle into async