Change the Lexer iterator to return a result only value.

- Note fix this later
Change signature of read_str function to return a tuple.

TODO fix this so all functions return a XmlResult
Add functions that recognize chars in name

- Functions `is_name_start()` and `is_name_char()` serve to find chars
  that start or compromise token name as defined in
  http://http://www.w3.org/TR/xml11/#NT-NameStartChar
Added extra fields on XmlError to allow for pretty printing