Helper for passing extra context to Errors

I imagine this could be adapted to use the same pattern as with_context

let file = open(config_file)
  .with_zip_err(|| format!("Opening config file '{config_file}'"))?;

with a thiserror style Error of

#[derive(Error, Debug)]
enum Error {
    #[error("IO Error of: {0} with context of {1:?}")]
    Io(#[from] std::io::Error, #[context] Option<String>)
}