Restore error reporting detail
PR #809 removed some detail from error reporting. Some errors enum arms used to contain extra information regarding the exact cause of the failure of some sub-operation. Instead, a plain enum arm with no extra information is used now.
By parametrizing the traits by an error type, the concrete error type that should be included in said error enums are dependent on the type that is the trait implementor. I.e. instead of a fixed FooError type, we get <FooThingy as FooTrait>::Error. The error enums have not been generalized to handle it thus far.
The places where this apply can be found by grepping the code for issues/811.
This is intended as a temporary measure. Original amount of detail should be restored at some point.