Adding progress tracking to the various upload methods

I've added the ability to track uploads as they progress. This is supported for all of the `Session#upload_*` methods. This is useful for providing feedback to the user when uploading large files (in my case, around 700MB).

For example:

```ruby
session.upload_from_file('foo.txt', 'Foo') do |sent_bytes, total_bytes|
  puts 'Uploaded: %.2f%%' % ((sent_bytes.to_f / total_bytes) * 100)
end
```

These changes include updated tests and documentation for the feature. Additionally, I included a small fix for tests when running on Windows.