[Revised] SE-0235: Add Result to the Standard Library

Because dataTask(with:completionHandler:) returns a URLSessionDataTask, it is impossible to be converted into async/await directly. I think we need an extension method like below.

extension URLSessionDataTask {
    func completion() async throws -> (Data, URLResponse) { ... }
}

Then we need to provide URLResponse for error cases by throwing an error like @omochimetaru proposed.

enum may be preferred.

enum URLSessionDataTaskError: Error {
    case foo(message: String)
    case bar(message: String, response: URLResponse) // when received a response but fails
    ...
}