Moving encrypt, sign and send logic from gateway (SMTP) to an OutgoingMail class

Creates a MailService that has the logic for encrypting, signing and sending messages. Factors that logic out of EncryptedMessage so it can be used by other clients
That's right, `str` uses `ascii` by default and will fail unless we allow just ascii characters for the userid.
Encoding to utf8 is better. I think it would be better to handle `unicode` objects until we need to serialize (as we do on the line below (`SMTPFactory`) but is not mandatory