librustc: Introduce a "quick reject" mechanism to quickly throw out

method candidates and prevent method lookup from being invoked at all
for overloaded operators.

40%-50% improvement in typechecking time.

r? @nikomatsakis 
This should use `FnvHashMap`. I wonder if there are other places in the compiler where randomized `HashMap`'s have been used, and which are causing non-determinism.