AsyncHelpers: made some change to Maybe<T> and IAsyncTarget<T> to be able to build on .NET 4.0

- ExceptionDispatchInfo does not exist in NET40 so we use regular Exceptions
- renamed Maybe<T>.ThrowIfFailed() to ThrowForNonSuccess() so that it matches TaskAwaiter<T>.ThrowForNonSuccess()