remove the illusion that fixture upload is asynchronous.
simplify "replace" logic
pull upload-specific code into its own module

start using exceptions for better flow control and separating the
processing logic from the error rendering logic

This commit is 90% just moving code around.
split out function
pull failure messages out to module level constant
format and mark error messages for translation
fix broken translations to be translated before parameterization
convert fixture upload result to a class
finish untangling the request / ui flow from the actual upload process
catch error during fixture api call
Merge pull request #3738 from dimagi/fix-fixture-api

catch error during fixture api call
unused import
basic end to end support of making fixture upload asynchronous

is heavily modeled off other bulk upload code/uis
move additional error handling and feedback to the asynchronous ui
wording change
remove unused code
do initial validation of file format in the synchronous UI, cleanup
add more up front validation and cleanup
add progress bar support
Merge branch 'async-fixtures' into autostaging