Async

The operation deferral has now been hand-tested.
We need a better name for this. Also, `haas serve` is ambiguous now. One idea (not necessarily a great one): `serve_api`/`serve_engine` (or maybe `serve_agent`). I actually don't love that either, since `api` would still be touching things like headnodes directly.