Refactoring suggestions

This PR contains a few small refactorings reflecting 
things I'd like to see us change about the language in the code
as we move from Gherkin 2 to Gherkin 3.

Basically, this just comes down to reducing the amount of
solution-language used in the code, by replacing most of the explicit
references to the visitor pattern. Instead I've used what are, IMO, more
meaningful names for the types and messages.

I've done this as a PR because I didn't feel comfortable pushing it
straight into master without some discussion.

What do you think? Any concerns?