Normalizes paths similarly to canonicalize, but without performing I/O.
This is like Python's `os.path.normpath`.
Initially adapted from [Cargo's implementation][cargo-paths].
[cargo-paths]: https://github.com/rust-lang/cargo/blob/fede83ccf973457de319ba6fa0e36ead454d2e20/src/cargo/util/paths.rs#L61
# Example
```
use normalize_path::NormalizePath;
use std::path::Path;
assert_eq!(
Path::new("/A/foo/../B/./").normalize(),
Path::new("/A/B")
);
```