this trait has been stabilised in Rust 1.81.0.
the existing custom `Error` types cannot be removed / replaced as that'd
be a breaking change. for the same reason it's not possible for them to
require `core::error::Error` being implemented.
however, we can already implement the new trait for all cases where the
custom trait has been implemented so far.
existing `std` feature-gated implementations of `std::error::Error` have
also been moved to `core::error::Error` and the feature gate removed.
this raises the MSRV to 1.81.0 for most crates, but based on the MSRV
policy this should not be an issue.