Makes fixture upload asynchronous

http://manage.dimagi.com/default.asp?119925

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`)