mainClause() dropped any clause merely containing 'that', 'before',
'who' etc, so a main clause with a nested relative clause lost to a
comma-list fragment and the wrong verb was reported. Only drop a clause
when the word comes before the clause's own verb, and parse the pattern
once per call rather than once per clause.
Fixes#1035