Part #1 of synchronous requests: Add channels and a mechanism for waiting

Respective registries don't actually implement the channel behavior yet.
case obj := <- out