Fix assorted drafts/sending bugs.

* Keep track in memory of which syncback actions have been scheduled but not
  completed, so that we don't try to schedule them twice.
* Remove `message.is_draft` assertion from inbox.actions.delete_draft. This was
  failing when we sent a message, then tried to delete the draft-that-it-was.
* Return instead of raising an AssertionError if we try to send a message that
  isn't a draft or is already sent.
* Distinguish between creating a draft and syncing it to the backend,
  and creating a draft only to send it immediately (in the /send API).
* When constructing the In-Reply-To and References headers on a message, don't
  the previous message's Message-Id and References headers may be null. In this
  case, gracefully degrade instead of failing with a TypeError.