yield progress data to a code block in case users want to implement custom progress handling

This add the ability to perform custom handling with progress data yielded to a code block. Example usage:
```ruby
WinRM::FileTransfer.upload(client, 'c:/dev/my_dir', '$env:AppData', :quiet => true) do |bytes_copied, total_bytes, local_path, remote_path|
  bar = ProgressBar.create(:total => total_bytes.count) unless bar.nil?
  bar.progress += bytes_copied
end
```
I still think the custom formatting of the executable would be neat but I want to get this out for now since it is the most useful and I plan to switch gears for a bit on some other work.