(refactor) Bound the Error trait with Send

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 + Send>`.

This changes rust-error to use this type internally, so as to discourage
use of `Box<Error>` without the `Send` bound.

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