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.

The distribution of wakeups for pings should be a poisson process and
therefore relatively smooth.
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.