Improve syncback concurrency limit.

Summary:
There's obviously more work to be done here, but in the meantime this commit
removes the global limit on the number of syncback actions that can be tried
concurrently. Instead, it bounds the number of concurrent syncback greenlets
for each (account_id, action_type) pair.

The reason for this is that previously, if say archiving was broken for a
particular account, but there were a bunch of archive actions outstanding for
it, the entire syncback service could grind to a halt. Not ideal.

Smaller associated changes:
 * Make the SyncbackWorker class just be a simple function.
 * Refactor to hoist sleeping-before-retrying out of the database session
   scope.
 * Remove nested database session in delete_draft.

Test Plan: Run some syncback actions.

Reviewers: charles

Reviewed By: charles

Differential Revision: https://review.inboxapp.com/D440