rewrite: send mail

This reworks the mail sending stuff.  You now send mail by calling
`send_mail` on a mailer and passing it a message object.  The message
will be validated, sent using the mailers settings, and logged.

A message can be any object as long as it implements the necessary
API.  However, Mail (https://github.com/mikel/mail) is recommended
and required in by default.