Higher-ranked trait bounds

A description of higher-ranked trait bounds, which is the remaining piece needed to make unboxed closures equal to normal closures.

[Rendered view.](https://github.com/nikomatsakis/rfcs/blob/hrtb/active/0000-higher-ranked-trait-bounds.md)


The current syntax for higher-ranked lifetimes in bare functions is `fn<'a>(&'a int)`, not `<'a> fn(&'a int)`. Perhaps bare functions could stay the same, `Fn{,Mut,Once}` could use a similar syntax with the sugar (`Fn<'a>(&'a int)`), and any other trait would have to use the `for` syntax (`for<'a> Foo<&'a int>`).