[Concurrency] Structured concurrency

One of the use case of Detached tasks is to bridge the worlds between old & async world.
Current interface to get the result
public func get() async throws -> Success { ... }
makes it looks like we can only use it in another async function.
Maybe we can have another interface like
public func get(completion: (Success)->Void) throws -> Void to make the bridging feature more obvious?

There's a short discussion in the async/await thread. [Concurrency] Asynchronous functions - #62 by John_Lin