Include MAC expiration in the message itself.

This allows security to be tuned on a per-namespace basis.
Reject bad websockets before switching protocols.

Using HTTP 403 instead of a custom websocket error is more semantically
correct and rejecting the connection before going through the protocol
switch should be more efficient as well.
Use a single greenlet per connection and send PINGs.

This should reduce memory usage and sending PINGs ensures that we keep
any intermediate proxies happy.
config: Get rid of AttrDict for simplicity.
Yield when dispatching to avoid starvation.
Remove haproxy from the mix. Connect directly.
Increase the gunicorn max connection count.
AMQP: Use the routing key to specify broadcast namespace.
Add skeleton of periodic stats reporting.