Create a HubAction

The argparse package allows executing arbitrary actions on command-line
arguments.  This change creates and uses a HubAction, which will parse
the hub specified on the command line and store an appropriate tuple in
the namespace.  This also adds a function to determine the default hub.
Finally, a minor bug was fixed in the declared send_notification():
send_notification() was expecting the hub in the "hub" argument, but
the command line option would have stored into the "host" argument.
Correct a docstring.
Use gevent ssl wrapper

Since we're not using monkeypatching, we need to use the gevent versions
of wrapped packages directly.  This switches the use of ssl over to the
gevent version of ssl.
Correct a typo in a comment.
First pass at the base notifier

This creates the first pass at the base notifier.  The actual notifiers
are subcommands in the "heyu.notifier" group.  Notifiers instantiate a
heyu.notifier.NotifierServer object, then iterate over it; iteration
yields heyu.protocol.Message instances of type "notify", which represent
the actual notifications for the notifier to display.
Add urgency_names map

Add a dictionary to protocol.py to map urgency levels (integers) back
to urgency names.