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
Fix compilation for latest rustc.

Some warning are still there.

(cherry picked from commit 5c690b33d60725d8ef90c8531adf832f9afd27a8)

Conflicts:
	cp/cp.rs
Add vim formatting comment.

Because otherwise, I can't do any work. ;)

(cherry picked from commit 05d026d0d001f745154c81a131782516581b7be4)
Use raw stdin/stdio.

Buffered one is expensive and serves no purpose.

(cherry picked from commit ace707d5044026b1167b3326692c8c8f118e05e4)
Use Buffered input/output where it makes sense.

(cherry picked from commit c084bb1568d62d0e3e17151c8a4e859a95805a07)
Increase buffers for boost in performance.

(cherry picked from commit 4b702bc9522503b88d9084de2ce5780f75ee9e23)
Use `.unwrap()` and &byte for cleaner code.

(cherry picked from commit 0a91290d912d9193f707879bba5865e43b2094da)