Add Date and Message-Id mail headers

These headers are important for passing certain spam filters.

This implementation automatically fills in the date if not specified, since you pretty much always want it set. However, it does not attempt to automatically generate a `Message-Id` and leaves it up to the caller to determine a unique id for the message.

Here's an example SpamAssassin report for an email missing the `Date` and `Message-Id` headers (note, higher numbers means more spammy):
```
* 0.0 SPF_PASS SPF: sender matches SPF record
* 0.1 HTML_MESSAGE BODY: HTML included in message
* 3.0 BAYES_95 BODY: Bayes spam probability is 95 to 99%
* [score: 0.9680]
* 0.5 MISSING_MID Missing Message-Id: header
* 1.4 MISSING_DATE Missing Date: header
* 0.0 T_REMOTE_IMAGE Message contains an external image
```

Notice how `MISSING_DATE` adds an additional half of the score increase that a 97% spammy body adds.

cc @xthexder