Refactor AST, removing more dead code and simplifying
Delete dead method
let's initialize @failed in ctor
stepdefs.json
Reduce coupling to instance variables
try moving code for executing scenario onto tree walker
Decouple from @steps
Remove spurious call
Simplify how feature is set on feature elements
Remove more dead code
Reduce coupling to instance variable
Extract method to build this examples table thing
Reduce coupling to instance variable
Refactoring AST. Big commit.

This turned into a monster as I discovered a hideous method in the HTML
formatter that was coupled to loads of the internal structure and ivars
in the AST.

I've replaced this by building the beginnings of the way forwrad - a
`Cucumber::Unit` class which represents each test case to be executed at
runtime, whether it comes from a regular scenario, or from an examples
table row.

Right now, the `Unit` is only used for counting steps (to replace the
hideous code mentioned above) but I'm expecing it to attract more
behaviour as this refactoring continue.
Gradually whittling away at temporal coupling.

The aim is to get rid of the `#init` methods on all the AST nodes
and inject the right data in with the constructor.
This was adding nothing
Move assignment of Feature#file into constructor
Use Location instead of file / line primitives
Use method not ivar
Chip away at init