Remove these incorrect assertions.

For instance, ';' is a valid content that can trigger these assertions.
Add a test case to catch this.
Move this to sax_parser_global.
Move parts of sax_parser out of its template part.

To keep the size of template instances smaller.
Move sax_parser_element to global.
We can move this to global too.
Simply this a bit.
Move this to base too.
Move this to base.
Rename sax_parser_global to sax_parser_base.
Move these generic functions to parser global.
Add csv base to move code that doesn't have to be inline.
Add csv::parser_base to move non-templatized code for size reduction.
Set up context stacks for xls xml.
Add predefined namespaces for xls xml.
Parse it down to cell data.
Pick up sheet names.
Allow sax parser to have more than one cell buffer.

This is to ensure that when multiple attributes of the same element
have encoded values the newer value won't overwrite the older one in
the temporary buffer.

This is needed for sax_token_parser as it stores all attributes in
std::vector before sending them to the handler.
Add test for parsing multiple attributes with encoded characters.
Import cell data from Excel XML.