Change _MailMixin.send signature and procedure

1) Add the parameter `envelope_from=None` to be able to modify the envelope from
from client code. The former version had `envelope_from` parameter only in
`Connection.send` and it was impossible to call from client code without hacking
a little.

2) In order to use this parameter, the mail is sent using the `connection`
object instead of the `message` object. This also reduce one level of innecesary
indirection (`Message.send` only does `connection.send(self)`)