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`)
most of what's below here is moved / slightly tweaked but not really changed code. I ran out of steam/time in my cleanup and wanted to make sure I could get this out.