Refactor: rename method
Change compilation of hooks.

HookStep now looks more like Test::Step again. In fact, I think we may
be able to merge the classes completely.

We now have BeforeHook and AfterHook classes, which are added to the
source of the HookStep.
Refactor, folding HookStep into Step
Better specs
Refactor: namespace
Ensure hooks conform to protocol expected by Test::Step
Don't give control of the test run to the reporters
Reverse the order that `describe_source_to` yields the AST nodes
Consistency
We don't need circular references in the AST
Expose location from ExamplesTable
Remove feature and scenario from hooks source
First pass at adding AfterStep hooks
Refactor
Refactor, rename
Got AfterStep hook working cc @tooky

Had to merge Mapper and HookCompiler so that the user mappings can be
read in a single pass

TODO:
- tidy up the specs for HookCompiler, move some over as specs for Mapper
  and delete the rest
- tidy up build_hook_step duplication
- is there a way to split responsiblity for mapping steps with the
  responsibility for compiling in hooks again? Maybe have a filter that
just collects up mappings then pass that to both hook compiler and step
mapper?
- names: mapping, mapper, etc. Also some things got renamed to compiler
  which clashes with cucumber/core/compiler.rb
Work around https://github.com/travis-ci/travis-ci/issues/2220