Avoid filling the props collection with Nones.

If the database doesn't have a useful value for us, it's more useful
to represent this as a missing value, than to have it as a None.

Change-Id: I7d8ace7fe97fd26cc928e541bd1c54b0ff3e3483
If created without an id, get this from the db when inserted.

This is most useful when the id is a numeric incremented value.

Change-Id: Ia9589f2b26c94954bbd3e0d47dfef5d444afd136
Rename mailer methods in preparation for replacement.

Change-Id: I037b5cd924e0610fb52e10c95e3c770916ee5dbf
Add a PendingSend wrapper for emails that havne't been sent yet.

This is gonig to be used as part of a replacement mailer that doesn't
send emails as part of the web requests.

Change-Id: I9da6a3def73b6eed52c76dbf4494cb7d4e1e3370
Save emails to the db rather than sending immediately.

Introduce functionality to save requested emails into the sqlite
database rather than sending them directly. This should give us
greater control over when & how they're sent, as well as giving us
a record of what emails are sent. Add a config option which allows
for direct sending if desired (though the database will still be
populated).

Add tests for the mailer, particularly the new functionality, but
nothing as yet for actually sending the emails.

Have cron make use of a new helper function which sends the next
50 emails from the database, though we may want a specific script
that can be run more often.

Change-Id: I7efc93e68547313f5cfaa16d43288a811116457b