This PR changes the entire error system, and adds new/different error messages using the failure crate