This change in complete, currently in proof-of-concept stage.
Creates a new error set for non-program errors, i.e. errors caused by
dodgy input (malformed archives) as opposed to programming mistakes or
runtime issues.
Seperate-out printing to stderr (now done in main.zig) from producing
errors when parsing & formatting useful error strings.
The intent here is to make archive parsing more usable as an API, and
eventually capture & return more kinds of errors.
Top-level error handling for program errors (eg. OOM) to come after we
decide how to handle these kinds of errors.