Add descriptions to GherkinBuilder DSL

The correct structure for Gherkin is like this:

```
<keyword>: <name>
<description>
```

Basically the name is only what's on the first line, with the keyword,
and the description is everything else up to the next keyword.

That's not how the current AST classes model it, but that's because
they're out of date.

So we need a way to be able to specify the description for a node as
well as the name. The DSL should take it as a separate argument because
our AST model should eventually be brought into line with gherkin's.