When we add more primitives (e.g. PubKey), it's better to share one error type.
We don't use Report in bitcoinsuite-core, because we eventually want others to be able to use this crate, and we shouldn't force them to use Report for their error handling.