Add support for scenario outline to builder
Extract modules for common behaviour

  * Modifiable keyword
  * Indentation
Generate the element builder methods
Clean up the table rows handling.

Hopefully its a bit easier to follow.
Add support for tags to GherkinBuilder

@mattwynne anything still missing from this?
Extract `prepare_statements` to handle indentation
Move GherkinBuilder helper modules to their own file

Hide some of the details, so this file isn't so unwieldy