RFC: associated items and multidispatch

This RFC extends traits with *associated items*, which make generic programming
more convenient, scalable, and powerful. In particular, traits will consist of a
set of methods, together with:

* Associated functions (already present as "static" functions)
* Associated statics
* Associated types
* Associated lifetimes

These additions make it much easier to group together a set of related types,
functions, and constants into a single package.

This RFC also provides a mechanism for *multidispatch* traits, where the `impl`
is selected based on multiple types. The connection to associated items will
become clear in the detailed text below.

[Rendered view](https://github.com/aturon/rfcs/blob/associated-items/active/0000-associated-items.md)
In principle, you could probably infer the associated type given the signatures elsewhere, but that's not part of this RFC (and we could always add it later).