Migrate Error-Handling to Failure crate.
Currently we are using error-chain, but Failure seems the new hotness that everyone transitions too. The main feature seems to be that creating a new Error is not that hard.
We should probably also convert the bail! macros too proper Errors too, and document them.
Relavant Resources:
https://boats.gitlab.io/failure/