Implement multidispatch and conditional dispatch.

Implement multidispatch and conditional dispatch. Because we do not attempt to preserve crate concatenation, this is a backwards compatible change. This is not yet fully integrated into method dispatch, so "UFCS"-style wrappers must be used to take advantage of the new features (see the run-pass tests).

cc #17307 (multidispatch)
cc #5527 (trait reform -- conditional dispatch)

Because we no longer preserve crate concatenability, this deviates slightly from what was specified in the RFC. The motivation for this change is described in [this blog post](http://smallcultfollowing.com/babysteps/blog/2014/09/30/multi-and-conditional-dispatch-in-traits/). I will post an amendment to the RFC in due course but do not anticipate great controversy on this point -- particularly as the RFCs more important features (e.g., conditional dispatch) just don't work without the change.
On Wed, Oct 01, 2014 at 06:27:23PM -0700, Patrick Walton wrote:
> This is written strangely. Is this right?

I think so, but it merits some comments. The idea is that 

(1) we can ignore errors if they concern ty::ty_err
(2) we only expect ambiguity if there unbound inference variables
(3) otherwise it's a bug


Niko