OperationToFuture must throw CancellationException on get() if cancelled

The JDK documentation for Future.get() and its overload requires these methods to throw CancellationException if the Future was cancelled before the task completed. The Futures returned by OperationToFuture.toFuture() did not respect this contract. Now they do.