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, if there was an unknown exception, it would be 500 for user instead of "Unknown error, looking into..." and one less (redundant) error-email?