[CSharp] Fix cancellation propagation

We should check for IsCancelled before we get the result, otherwise
we will end up throwing an AggregateException which wraps the
TaskCanceledException. This is not what we want.
Merge pull request #313 from mono/fix_cancellation

[CSharp] Fix cancellation propagation