RFC: Error Reform and Failure Box

This RFC proposes four things:

* a reform to the `Error` trait to support better messages.
* a new `Failure<T>` wrapper for errors to support optional tracebacks.
* a `ConstructFailure` trait to support interoperability between errors and failures.
* New `try!` and `fail!` macros that use `ConstructFailure` instead of `FromError`.

[Rendered View](https://github.com/mitsuhiko/rfcs/blob/failure-box/text/0000-failure-box.md)
Will this lead to unneccesary allocation? Perhaps loc could be a closure that returned an `Option<LocationInfo>`