Big merge

I needed access to the GherkinParser from the browser, so I did some refactoring.

- `dherkin_core` is not dependant on `dart:io`.
- less global variables, more dependency injection
- misc code butchery.

I merged all your recent changes, too.

You throwing it out there, if you don't pull it's okay ;)