add product upload view

also a bunch of mostly minor refactoring to be able to share the bulk of the download status logic with location import.

probably easiest read commit-by-commit

depends on https://github.com/dimagi/django-soil/pull/14 and https://github.com/dimagi/commcare-hq/pull/2764