* tar: replace all string-based error variants with structured types
Every TarError variant now carries PathBuf and/or io::Error data
instead of a pre-formatted String. Add thiserror derive macros so
Display implementations are generated from #[error(...)] attributes
in one central place. Eliminates the last generic TarOperation and
InvalidArchive string variants.
Add tar prefixes, update tests to match.
Add a CI step to run `rustup component add llvm-tools` before
generating coverage data. grcov requires llvm-profdata (part of
llvm-tools) to process .profraw files; without it the coverage
job fails with "couldn't find llvm-profdata".
Replace `uucore::util_name()` (argv[0]) with the literal string
"tar (uutils)" as the clap Command name. This gives a consistent,
recognisable program name in --help output regardless of what the binary was invoked as.
Closes#150
Implement the list operation. Non-verbose (-t) prints one entry path
per line. Verbose (-tv) prints permissions, owner/group, size,
modification time, and path — matching GNU tar's ls-l style output.
Adds conflict group so -c, -x, and -t are mutually exclusive.
Pulls in chrono for timestamp formatting in verbose output. chrono is
already in the workspace dependency set and will also be needed for
date parsing when --newer=DATE is implemented.
Point uucore/uutests at the coreutils git repo while we're iterating
quickly on basic functionality.