RFC: new lifetime elision rules

[Rendered](https://github.com/aturon/rfcs/blob/lifetime-elision/active/0000-lifetime-elision.md)

Note: the core idea for this RFC and the initial survey both came from @wycats.
Almost all of the remaining cases are situations like:
```rust
impl<'a> AsciiCast<&'a[Ascii]> for &'a [u8] {
    fn unsafe fn to_ascii_nocheck(&self) -> &'a[Ascii] { ... }
    ...
}
```
where the `impl` involves types with lifetimes, and the `fn`s within refer to those lifetimes directly. That counts against us in two ways:
1. The `impl` header has to be annotated so that you can name the lifetime, even though it would otherwise follow the standard pattern, and
2. The `fn` definitions have to be annotated to use the outer lifetime.

Note that this kind of example does not require an annotation according to the rules (so you wouldn't get an annotation error if you elided the lifetime). Rather, the annotation is needed to go beyond the patterns provided by the rule.