Use a cached canceled task in ValueTask (dotnet/corefx#27967)
When an IValueTaskSource reports it completed due to cancellation by the time we AsTask it, we can use a cached canceled task if a) this is the netstandard build, or b) this is the netcoreapp build and it reported cancellation but threw an exception other than a cancellation exception. We cache the non-generic one in a readonly static, since there's only one of them, but lazily cache the generic one.
Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>