Implemented canceling of uploads (mostly).

What remains to be done is warning the user if their selection in
the Uploads view includes uploads which have already completed.
In that case, those upload records will disappear from the Uploads
view when the user clicks "Cancel Upload(s)", but those uploads
won't really be canceled if they have already been completed.  In
this case, the user should probably be told that some of the
selected uploads have already completed and asked if it is OK to
continue with canceling the remaining selected uploads.

It's worth noting that selecting a large number of uploads and
canceling them can lead to some GUI concurrency weirdness, where
the methods to update the progress bars for upload progress are
running while their rows are being removed from the Uploads view.
In this case, we replace the DataViewIndexListModel class's
RowValueChanged method with our own TryRowValueChanged, which is
more forgiving if the data view row has disappeared by the time
the GUI thread gets a chance to respond to the RowValueChanged
notification.  These concurrency issues can lead to some warnings
in MyData's logs (which could easily be suppressed if desired).

There should probably be a short-cut for canceling everything and/or
a shortcut for selecting all rows (control-a on Windows, command-a
on Mac OS X).