Added average benchmarks for the parser.
Don't create Arrays when not needed.
Fixed guard in the lexer header.
Removed useless code from the XML parser.
Merge multiple comment tokens into a single one.

The tokens T_COMMENT_START, T_TEXT and T_COMMENT_END have been merged into a
single token: T_COMMENT. This simplifies both the lexer and the parser.
Merge multiple CDATA tokens into a single token.

The tokens T_CDATA_START, T_TEXT and T_CDATA_END have been merged together into
T_CDATA.
Cleaned up the XML lexer documentation.
Remove dedicated string machine in the XML lexer.

This removes the need for another fcall/fret combination.
Moved various rules around for the XML lexer.

This moves the element related rules to the element_head machine (where they
belong). This in turn makes it possible to lex ">" as a text node, previously
this was impossible.
Replaced fcall/fret with fnext in the XML lexer.

With the rules being cleaned up/moved around a bit we can drop the use of
fcall/fret. This saves the need of having to maintain a stack (position).
Removed remaining fhold call in the XML lexer.

There's no particular need any more for this fhold call so we're getting rid of
it.
Cleaned up documentation of the XML lexer.
Use a method for getting input in the XML lexer.

Instead of directly accessing the `data` instance variable the C/Java code now
uses the method `read_data`. This is part of one of the various steps required
to allow Oga to read data from IO like instances. It also means I can freely
change the name of the instance variable without also having to change the
C/Java code.
Boilerplate for the XPath lexer.
Cleaned up XPath lexer boilerplate a bit.