[Concurrency] Structured concurrency

With @anandabits's Generalized supertype constraints you could theoretically hack this into the type system with a generic parameter T: () throws -> () (which would, I think, only be inhabitable by () -> () and () throws -> ()).