An abomination for xref
An abomination for xref

This supports transformations like:

* `{{X (T)}}` -> `<xref target="X">T</xref>`
* `{{Section X of Y}}` -> `<xref target="Y" section="X"/>`
* `{{Section X of Y (T)}}` -> `<xref target="Y" section="X">T</xref>`
* `{{Section X (T) of Y}}` -> `Section <xref target="Y" section="X" sectionFormat="bare">T</xref> of <xref target="Y"/>`
* `{{Section X (TX) of Y (TY)}}` -> `Section <xref target="Y" section="X" sectionFormat="bare">TX</xref> of <xref target="Y">TY</xref>`

Plus all of the above with "Appendix" instead of "Section".

* `{{Sections X (TX) and Y (TY) of Z (TZ)}}` -> `Section <xref target="Z" section="X" sectionFormat="bare">TX</xref> and <xref target="Z" section="Y" sectionFormat="bare">TY</xref> of <xref target="Z">TZ</xref>`
* `{{Sections X (TX), Y (TY) and Z (TZ) of A (TA)}}` as above; with the text bits all being optional
* `{{Sections X (TX), Y (TY), and Z (TZ) of R (TR)}}` with or without an Oxford comma
* `{{Sections X (TX), Y (TY), and Z (TZ) and Appendix A (TA) of R (TR)}}`
* `{{Sections X (TX), Y (TY), and Z (TZ) and Appendices A (TA) and B (TB) of R (TR)}}`
* `{{Section X (TX) and Appendices A (TA) and B (TB) of R (TR)}}`

Quirks and limitations:

* This respects the choice of Oxford comma of authors because it was easier that way.

* Authors need to provide the type of section; it won't infer that A.3 is an Appendix and 4.2 is a Section.

* This accepts `{{Section A and Section B of X}}` and renders it that way (with two text nodes that say "Section ").  Same logic as above.  This is because, the keywords are treated as interchangeable, except that the plural form is needed to include multiple section numbers.

* Text content from the parentheses is simple text that is escaped, not full markdown.

* `{{!FOO}}` and `{{?FOO}}` don't work with this stuff, as before.

Closes #116.
Closes #117.

cabo/kramdown-rfc2629,cabo/kramdown-rfc2629