allow mail rendering at delay time

The current solution to delayed mail delivery renders the mail template at delivery time:
    Notifier.delay.signup(@user)

When you try to explicitly delay delivery you will get an error:
    Notifier.signup(@user).delay.deliver
    > Use MyMailer.delay.mailer_action(args) to delay sending of emails.

The new approach will serialize the mail message at delay time using Mail::Message.encoded and deserialize using the constructor:
    Notifier.signup(@user).delay.deliver