Increase flexibility for HTML5 uploads

- [x] `method` may be specified. `POST` is the default.
- [x] URL for upload may vary according to the file. Just pass a function to `url` to do so.
- [x] Let XHR decide the content-type instead of hard-coding `application/octet-stream`.
- [ ] tests + code clean up.