Concurrency fixes

@wesleykendall This commit makes the changes we discussed in regards to making sure emails don't get sent multiple times.

It completely removes the SendAsyncNow task and signal handling code paths in favor of a default value for `Email.scheduled` set to `datetime.utcnow()`. This will mean that there could be some small delay between when an email is saved and when it is sent. I think this is a fair trade off though.

It also adds `db_mutex` as a dependency.