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)
I think this is also a reasonable choice. But I think I prefer the `match`-like syntax *because* it better matches the actual behavior and meaning, i.e. it makes the reader think of `match`, rather than of `try`-`catch`-`catch` from other languages, and this is in fact the correct intuition. The alternative would repurpose familiar syntax to mean something similar but significantly different, which I'm a little bit uneasy about.

(But again I think both are basically fine, I'm just explaining my preference.)