chore(scenario): reduce duplication of Describe by Runner

Runner has a lot of boilerplate code to a) update current describe, and b) delegate calls to the current describe. Abstract these out with factories.

By doing so, we also prevent Runner from second-guessing Describe's implementation (eg. marking methods as `noop`), which breaks abstraction.

Additionally, this pull request contains a bug fix for Describe (patch 1), which was revealed now that Runner's wrapping of Describe was made even thinner.