reuse append and set_buf across our parsers

give each parser a name

[gemtext] improve parse_link * add a mising `&& isspace(buf[0])' that would make the parser skip the link label * swap alt and line: line is the text, alt the URL * text is always defined, at worst is a copy of URL

[gemtext] fix append and set_buf it wouldn't resume parsing well without these

update the length in set_buf this caused a bug with long lines

flush the buffer when freeing the parser

initial commit