Eager load associated messages here rather than useless noop join.
Eager load namespaces by default.

This is a teeny tiny amount of data and we pretty much always want it.
Eager loading by default simplifies a lot of other code and reduces the
opportunity for errors caused by using joins incorrectly.
Deduplicate message download on poll too.

Notably, we don't want to re-download messages downloaded via IDLE
polling on Inbox via polling on All Mail.
Don't crash if folder monitors for account change during sync stop.
Never ignore soft deletes in mailsync sessions.

This fixes a potential bug where imapuids deleted in
check_new_g_thrids() will be soft-deleted instead of hard-deleted.
imapuids should never be soft-deleted.
Fix syncmanager_lock deadlock in Gmail sync.

Notably, this manifests when trying to run check_new_g_thrids() during
initial sync. It turns out that the code marked "XXX does this cause a
deadlock?" ...  caused a deadlock.
Fix add_new_imapuids()
Explicitly set primaryjoin on backrefs.

There's a bug in SQLAlchemy < 0.9.4 where the JOIN condition is
incorrectly generated from primaryjoin conditions which also specify
conditions intended for a backref. The fix is to make backref
primaryjoin conditions explicit.

This was causing cartesian products which OM NOM NOMd all the memory
when objects were loaded via relationships.

For more info, see:
https://bitbucket.org/zzzeek/sqlalchemy/issue/2948/better-replacement-of-columns-w-bound