Makes fixture upload asynchronous

http://manage.dimagi.com/default.asp?119925

screenshots:

![image](https://cloud.githubusercontent.com/assets/66555/3423400/12a58bc0-ff94-11e3-80e5-5699d0430ba0.png)

![image](https://cloud.githubusercontent.com/assets/66555/3423394/c938bd18-ff93-11e3-8c08-de5ca1d252c8.png)

Quite a bit of cleanup and refactoring along the way.

Possibly easiest to read commit by commit, although some of the commits are pretty big. Might be simpler to just review the finished product (most of the major functionality and changes are in `upload.py`)
so every time i've had a fixture support issue i've had to ask for the file to reproduce it anyways, so i was thinking that these notifications aren't particularly useful. my thinking was that one less inactionable error message is a good thing overall