Bug 57670: Avoid recursion via nested_block_in_table

So far we didn't have any protection against matching remaining table_lines
via the nested_block_in_table production. This lead to stack overflows and
slow parsing of large tables, as the remainder of the table would be parsed
recursively instead of iteratively.

This patch adds a syntactical stop and tests this for most table_lines
productions. This is fine as we don't care about nesting in the tokenizer. All
table lines are just parsed as flat tokens, to be assembled later by the
treebuilder.

Tested lightly with Obama etc, but will benefit from rt testing.

Change-Id: I0cf2302e209a5bfac8c81ff67ae160bf801a2fee
Improve handling of broken generic attributes

* Don't match newlines in the value -- generic_attribute is explicitly meant
  to be single-line.

* Accept missing quotes at EOL

* Add a test for this scenario.

This fixes a mis-parse discovered by manual testing on
https://en.wikipedia.org/wiki/List_of_go_games. An attribute with a missing
end quote caused a following td to be parsed as an attribute. This in turn
caused the caption of the table to be parsed as text (not sure about the
details).

Change-Id: Ifae9f48908742f2668d2ed24c83a0f7d55436baa
Merge "Bug 57670: Avoid recursion via nested_block_in_table"
Merge "Improve handling of broken generic attributes"