Attempt to catch exceptions inside async blocks

Related to #483.

Sometimes we've got `UnresolvedPathReferenceNoRange` from FCS. Since it's reraised by async implementation, I hope to catch it by `Async.Catch`. Let me know if it is of any help.

The ultimate solution of course is to protect against that exception in FCS.
Also, since you're trying to be "extra safe", it may make sense to make cancellationToken not be an F# optional argument, but rather either an explicit Option-valued argument (so you at least have to be explicit at each start point as to whether you want a cancellation token or not), or a completely non-optional argument (so all start points are forced to use a cancellation token).