arpabet: rework to use a phoneme_parser API

The generic cainteoir::parser API is not practical as there needs
to be a way of returning the item that was parsed. By using an
output parameter the implementation of the reader-based APIs can
be made simple and efficient in terms of the parser-based APIs.

This defines a phoneme_parser API for use with the phoneme parsers.
Other phoneme readers (such as espeak::pronounce) will use the
reader-based API as they do not process the buffer in the way that
the phoneme parsers do.

A phonemeset_reader helper class has been created to adapt a
phoneme_parser to use the phoneme_reader API. This allows the
parsers to be simplified and avoid the common code.

The arpabet phonemeset type is adapted to take advantage of the
new infrastructure.