Fix parsing of begin/endCaptures.
Use transparent bounds, catch match errors.

Transparent bounds ensure that we properly detect word boundaries even as we
process subranges of our entire string.

Catching match errors means we report useful feedback when a grammar is hosed
and dropping the rule in question rather than choking on our spoon and stopping
the whole parsing process.