RFC: Error conventions

This RFC sets out the first part of a vision for refining error handling in
Rust, by proposing a more clear-cut set of conventions around `fail!` and
`Result`. A separate follow-up RFC will propose syntactic sugar to make the
proposed convention more ergonomic.

In a nutshell, the proposal is to isolate uses of `fail!` to an extremely small
set of well-known methods (and assertion violations), with all other kinds of
errors going through `Option`/`Result` for maximal flexibility.

[Rendered](https://github.com/aturon/rfcs/blob/error-conventions-2/active/0000-error-conventions.md)