Don't use geventconnpool.retry in sendmail code.

It doesn't play nice with structlog. Use our own retry decorator instead.
Update docs to clarify that message recipients will never be prepopulated.

Test Plan: Look at the docs as served by redwood.

Reviewers: bengotow

Differential Revision: https://review.inboxapp.com/D338
Reset account.state='running' on a subsequent successful retry.

Summary:
I think this entire flow could use some refactoring,
this is intended to be a temp fix.

Test Plan: None

Reviewers: emfree

Reviewed By: emfree

Differential Revision: https://review.inboxapp.com/D354
Don't use an SMTPConnectionPool.

Summary:
We don't really need to maintain an SMTP connection pool, because in general we
only rarely need an SMTP connection for an account. Currently, once we open a
connection we try to keep it around forever, which is not ideal.

Instead, we just open and close a connection on an as-needed basis. This
resolves issues we were seeing around messages not being sent because of
improperly handled SMTPServerDisconnected errors.

Test Plan:
Use system tests to send messages for various providers; use added
raise_once utility in inbox/util/debug.py to check that sending succeeds when
retrying after an SMTPServerDisconnected error.

Reviewers: kav-ya

Reviewed By: kav-ya

Differential Revision: https://review.inboxapp.com/D357
Validate the namespace_id part of API URL paths.

This prevents a StatementError from being raised if you try to do something
like /n/bad%20id/threads, where the namespace_id part can't be decoded to an
integer.

Fixes T321.
[docs] Sending should mention providing to,cc for replies