Change 4 VALUE (String) members of the parser_t struct to str_t type
This is unfortuantely quite a large commit because the nature of
the change requires many parts to be modified at once; the
intermediate stages are not buildable and therefore not
bisectable.
Change the capture, output, link_target and link_text members of
the parser struct from VALUE (String) type to str_t. This should
improve performance because the str_t is faster and designed for
easy reuse so we can allocate a few instances at the beginning
of parsing and then use them repeatedly throughout the parse,
thus avoid many time-consuming allocations.
Remove the "capturing" member and instead use the "capture"
pointer as an indication of whether capturing is in progress.
Change the type of the "target" param in the
_Wikitext_pop_from_stack function (and the other "pop
from stack" functions) from VALUE (String) to pointer
to str_t.
Change the type of the "check_autolink" parameter to the
_Wikitext_append_hyperlink function from VALUE (boolean) to
bool.
Remove redundant passing in of parser->output to the
_Wikitext_pop_from_stack function.
Teach _Wikitext_blank to accept a pointer to a str_t struct
rather than a Ruby String (VALUE).
Add parser_new function to encapsulate the initial allocation
and initialization of the parser_t struct.
Rename str_append_rb_str function to str_append_string for
consistency with other functions in str.c.