[Testing] Basic end-to-end tests

Summary:
Christine, Charles, emfree,

I've started working on basic end-to-end tests. So far, the code only tests email sending and thread deletion.
The diff is quite short but here's some things I'd like you to take a look at:

1. I wrote object-oriented tests, which doesn't seem to be the blessed way in pytest. My reasoning was it would be simpler to define a main test class with all the test code and extending it using mixins for every provider. I'm open to suggestions to make the code simpler.

2. What's the scope of this testing? I decided on testing only whether calls on the API propagate to the IMAP backend. I guess we are planning on testing things the other way too? What's the priority?

3. How clean are we about testing? Is it okay to query the db to get an user's password? Right now user credentials are hard-coded into mixins which is kinda bad.

Test Plan: Run the tests.

Reviewers: spang, charles

Subscribers: emfree

Projects: #inbox-sync

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