(refactor) Bound all uses of the Error trait with 'static

This is an unfortunate necessity for making the library workable
until 'static bounds for Self on trait are implemented.

Any struct which wants to support `cause` will need to contain
a `Box<Error>`, however, since `Error` is not bounded by `'static'`
this is impossible, and the struct needs to store `Box<Error + 'static>`.

[Fixes #2] - thanks to @andrew-d for reporting.