Added some deriving attributes to some structs and enums.
Added String formatter for ScanErrors.

This pretty-prints the error with offset information.
Overhauled error reporting with Cursors.

It's much more consistent and *informative* now.
Made the guts of scan_util::scanner public for re-use.
Changed io::read_line to *not* error on incomplete lines.

If you hit EOF before EOL, it returns the partial line.  It only
propagates the EOF error if there was nothing on the line.