Implement cut - implement #165

This pull adds the `cut` command. When complete it should fix issue #165.

Currently it lacks support for the `-f`/`--fields` option. I will work on it in the upcoming days.

The `-c`/`--characters` option uses `rust`'s underlying definition of a character as a utf-8 sequence. This differs with `cut` behaviour for GNU coreutils, which simply implements `-c`/`--characters` as an alias for `-b`/`--bytes`.

Currently the program just `fail`s if it encounters a non-utf-8 sequence. The program should show an error, but seeing as the behaviour does already differ from GNU `cut` any suggesting on the handling of characters as utf-8 sequences are welcome.

I compared the performance between GNU `cut` and this implementation for `--bytes` and it is not as good as I had hoped.
I already switched from a idiomatic approach with iterators to a more C-like implementation, which did double the performance, but it is still an order of magnitude slower than GNU `cut`. Again, any suggestions would very much be appreciated. 
This looks like you're reading one byte at a time.  That might be the problem.  You could try wrapping it in a ```BufferedReader``` and see if that helps.