We `impl From<io::Error> for Error` to return `Error::TranscriptError`
because the transcript is the only source of `io::Error`.
`Error` no longer implements `PartialEq` because `io::Error` does not.
Tests can check for specific error cases with `assert!(matches!(..))`.