du: be dryer when extracting the --max-depth arg.

There's no need to repeat the two checks for `from_str` when we can just
do it preemptively.
du: use multi-line strings and print the actual name, not a literal `du`.
du: remove some clones.
du: make it correct.

Previously, this was handling symlinks wrong (i.e. `du` was following
them, not just looking at them as files). Handling them correctly
requires using `lstat`.

Also, this would abort when reading a file with invalid permissions (or
one that doesn't exist... as a link target of a symlink), rather than
just warning and continuing.

Also, this patch reduces the number of `stat`s done per file to exactly
one (i.e. the minimum).
Merge pull request #135 from huonw/du

Correctness & code-style in du