Do not combine adjacent ranges
Improve performance of cut_bytes()

Still an order of magnitude slower than GNU cut.
Add cut_characters implementation, based on cut_bytes

This implementation uses rust's concept of characters and fails if the
input isn't valid utf-8. GNU cut implements '--characters' as an alias
for '--bytes' and thus has different semantics, for this option, from
this implemtation.
Do not double buffer by using stdin_raw() instead of stdin()

By casting `box stdin() as Box<Reader>` stdin's buffering Reader
implementation is cast as the Reader Trait and then it is wrapped in a
BufferedReader(). This means two buffering layers. stdin_raw() Reader
implementation does not use a buffer, so when stdin_raw is wrapped in
BufferedReader() the new object has just a single buffer.
Remove unused imports
Fix misspelling of characters
Update usage of show_error!() macro
Replace usage of crash!() with the show_error!() and early return
Switch from nested matching to mapping results

This sonsolidates the error printing and early returns and save a few
lines in the process.
Fix double spaces
Use to_str() method provide by the ToStr trait
Add unwraps to IoResults