Trait-based exception handling

After a detour through thinking about [first-class checked exceptions](https://github.com/glaebhoerl/rust-notes/blob/268266e8fbbbfd91098d3bea784098e918b42322/my_rfcs/Exceptions.txt), I've now circled back around and convinced myself that @aturon's [original idea](https://github.com/rust-lang/rfcs/pull/204) of an `?` operator for propagating exceptions is actually brilliant and the perfect middle path. But I also want `try`..`catch`.

[CLICKME](https://github.com/glaebhoerl/rfcs/blob/trait-based-exception-handling/active/0000-trait-based-exception-handling.md)
Just make it like `match`—all cases have to be covered. Just because it looks vaguely like ‘`if`…`let`’ doesn’t mean it has to behave like it. I’d immediately assume that all errors have to be handled anyway, regardless of syntax.