Change fields of XmlLexer, change enum ExpectElem to State

- Change `enum ExpectElem` to `State` and add it to XmlLexer
- Remove fields `err_buf`, `modify_buf` and `context` and their
  callee
- Add fields `state` and `buf` that represent partial state of XmlLexer
  and the element buffer respectively, as well as modify other calls
Fix testing errors in test_whitespace and test_name
Add helper functions to XmlLexer

- `fn rewind` serves as a way to deprecate `peek_chr`
  it essentially just puts character in peek buffer and changes col,
  line to previous
- `fn update_buf` is conveniance function that updates buffer and
  does some pattern matching that updates buffer or handles EoF and
 Restricted char errors
Rewrote `get_lef_bracket_token` function

- The lexer is being rewrittern to minimize unnecessary peeks, currently
  function get_left_bracket is rewrittern to handle new way of reading/
  peeking
Test stuff
Fix some errors and add new test
Minor fix

Remove unused variable, change formating of a match, remove excess lines
Changed the way Processing Instruction is processed

- PIs now return both target and text, without whitespace