The HTML parser is now far more permissive.

(tests have been fixed accordingly)

Made it more permissive and stores errors in nodes (flag them as having errors and set a property with a single error or a list). Also fixed some issues by the way.

Also, some nodes are marked as possible orphans: we should be able to parse them as they are, but outside of the context of the parent they should be in.

Here is a summary of the flexibility of the new grammar:

- most elements can be left open. When I say "element", I mean essentially any rule in the grammar which has a form: opening, content, closing.
- generally the content of these same elements has been made optional, or at least some parts of these contents
- there are other kind of rules that have been transformed to have optional parts. For instance, the attribute of a tag: when the assignment operator is present we expect a value but it can be left without
- when there are rules with only alternatives: if no alternative can be determined (too few characters), it falls back to a let's say abstract/generic super elements

Also brought more consistency and made important things optional:

- forced closing tags to match the latest opening tag, considering the id
- made it possible to parse alone not matching closing tags, considered as "orphans"