added cancel support

Note that there is a fail for one of the NSOperations tests. This looks like a 2.4 issue, so I filed RM #1031 (not related to this commit).