Borrowed pointer refactoring

- Due to problems with borrowed pointers, I've switched to managed
  boxes, so this XML parser requires GC. This might require a thourough
  redesign in future to get away from GC, but for now the sanity will be
  preserved by using managed boxes. Hurray!
Commited tests for time being
Made first version of read function
 - Read function reads next char or moves position if not aligned with
   current position in stream.
Added prototype for unread function
Added escape/unescape method

- These method are used by other modules to escape/unescape a string of
  special qualifiers in XML context
Fix io path in crate, so it works from all scopes.
Added raw_(read/unread) methods for reading/unreading a character.

- These new methods allow to make more complex read/unread without causing
  infinite recursion.
Changed singature of methods to allow for easier newline handling.
Update read method to recognize several new lines

- Read method now recognizes, Window, Linux and RISC OS line endings.
  It also updates position, line, etc. There are some bugs.
Moved updating position out of read, into raw read.

- The raw_read/unread method now updates position, instead of
  read method.
Minor update to tests. Delete if necessary.
Removed position from XmlParser

- Removing position we might enable bigger streams.
  It's merely duplicating the functionality of reader.tell()
  function.
Added stub for tests