Refactor error handling so we do chain the error with the `?` operator rather than wrapping it with own types. Links to other error chains are created with error chain. All unneeded error kinds were removed. No API changes.