Add lifetimes to XmlParser

- Due to changes to way Source of data is now a pointer type. Because
  of this there was a need to add proper lifetimes to all XmlParser
  implementations.
Remove simple print style debug
Add a new method that takes a ReaderUtil and processes it

- Document can be parsed by simply feeding a reader with the parser.
Add pull API for XML parser

- This API should allow the XmlParser to mutate the XmlParser and output
  an XmlNode (or Error). Additionally a method with callback exists if
  there is a need to process the nodes in a really specific order.