Moving encrypt, sign and send logic from gateway (SMTP) to a MailService

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
this should be called outgoing_mail_service or something. the factory below uses it with the smtp factory, and pixelated will be able to use another factory that suits better their needs.