Add Progress Callback

This is a work in progress. Implements #28.

For now, it only works for uploading, not for downloading. I'll add the same functionality for it later, but first I'd like to have some feedback, there's a few things I'd love your input on.

* It only works for `File` objects, not `Strings` or others.
* `copy()` is not only called when uploading something, but also when getting the request body after the request using `body()`. This results in output like below. How would you suggest to work around this? I'm a bit reluctant to add a boolean flag to the `copy()` call.

```
...
491520 out of 492672 written!
492672 out of 492672 written! // end of file transfer
123 out of 492672 written! // body() called
```
* Naming and placement inside the class is ok?