Error refactor

This pull adjusts each of the major functions so they have just one error handling pattern: events or callbacks.

- `upload.getcreds` and `upload.createupload` are now callback only
- `upload.putfile` is now event-based only

This simplified the interface and fixes some race condition problems in tests where half of a test would return after the runner had already moved on to other tests.

/cc @camilleanne