Fix named predicate/otherwise parsing errors

As a result of https://github.com/alphagov/smartdown/commit/61b1bb2b848dbddc2dda859dda27e3030b1bbe7f  the parsing of `otherwise` as a `NamedPredicate` failed. The behaviour of otherwise relied on a the weird side effect of it being treated as a predicate, instead make otherwise an explicit language construct/operator.

Adds a high level acceptance test/fixture to catch regression and similar high-level parsing errors that weren't covered by tests.