allow control of when exactly an upload starts instead of automatically after file selection
give XHR callbacks some better context
some error handling and other minor cleanup