Introduce 'scheduling' context

Thie scheduling context is intended to replace the *_multi() methods by
allowing one to associate individual commands with a specific object,
which can be waited for and function like a future. This may also serve
as the basis for a future async API as well.