First stab at a synchronous agent

No docs, and I have NFI is EM will have a serious sadness about the way
we're running the reactor *after* a fork, but it's conceptually correct, at
least.