Add deriving for ToStr

- Needs deriving ToStr for visual representation of strings.
  Adds deriving to PINode, XmlElem, XmlAttr and XmlNode
- Fix wrong signature of XmlNS to_str to include a `&self` pointer.
Fix names to make them less ambigous

- Renamed XmlNode to XNode and it's elements to X* to denote it is about
  an enum member. Previous names were confusing. XmlElem had an XmlElem
  struct inside, etc.
- Removed extra package, that wasn't use anyway.
Add a new constructor for XmlElem

- New constructor can be used for simple creation of element tags.
  It takes a name of node so for example an `<name>` tag could be
  constructed using `XmlElem(~"name")`.
Remove pushback

- Refactored things around and thought pushback is unnecessary. YAGNI.
Added new test. Fixed whitespace problems.

- Added a new test for parsing a single element. It uses `xml_parser.next()`
  to read first node from the stream. This is the beggining of pull parser.
- Fixed some minor whitespace issues.