xml: Port SAX 2.0.

This is a port of SAX 2.0.1 (http://www.saxproject.org) in Nit. The
following is **not** included in this port:

* Support for SAX1.
* Exceptions.
* Factories (requires run-time loading).

Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
xml: Add classes to help testing a SAX parser.

Will be used to test SAXophoNit (A SAX parser in Nit).

Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
xml: Introduce SAXophoNit, a SAX processor in Nit.

For the moment, this implementation is mostly non-compliant, but it
works with most common XML documents.

Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
xml: split SAXophoNit in modules.

Split SAXophoNit in 3 layers:

1. The parser/frontend
2. The lexer
3. The model

Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
xml: Normalize white space in attribute values.

In a attribute value, any white space character MUST be normalized as a
space.

Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>