Mailer refactor

Replace send() with _sendmail() for Mailer subclasses.  Move
assertions into Mailer.send() to prevent duplication.
Remove isup() and allow _sendmail() to signal failure instead.
Add support for cc, bcc, attachments