A better stepper approach.
* One emit per step
* Can interact with external code
* Probably pretty slow (because the only way I know to make a
  callable function with metadata uses with-handlers)