Changed so that read function returns a enumeration

- The enumeration might simplify how we handle different line endings
  in future. This change also affects some test, so they've been changed
  as well.
Added unread function to parser

- Unread function now works correctly, updating position as it unreads
  chars from stream
Fixed a comment in docs
Added tests for double character line endings