Major update to lexer, almost all tokens now generated

- Lexer now generates all tokens. Sadly it took me so much to do this.
  Lexer changed treatment of CData, Processing Instructions and Comments.
  Now by default it will emit start, content and end as fully parsed tokens.
  This should simplify the parser considerably, seeing how it won't have to
  deal with parsing Comments, PIs and CData sections.
 - What still remains to do is add proper error handling and to make Whitespace
  a preserved token.
 - In plan rewrite most of helper functions, make each get_* function
  independent from the previous functions. current design is sloppy.
Ignore test files
Refactor escape(&str); Add ErrKind enumeration

- Refactor escape function to use sensible names and
  to prettify the match expression.
- Add ErrKind enumeration that will serve as to
  denote which type of error was encountered.
Add XmlResult new