Implement an `ErrorExt` trait

The iter_causes function should really be an extension of the error type. Additionally, it would be very convenient if it was possible to make an easy_error::Error type without having to Err(e).context(...).