refactor check_call_inner to have a better name and be readable
Move the replacement of bound regions out from `check_arguments` and into check_call / method_resolution
Rather than storing a list of ty::method per trait, store one ty::method
per method and list of def-ids per trait.
Compute a ty::method for methods that appear in impls as well
Pass around a pointer to the ty::method rather than the individual bits of info
Add a (currently unused) "transformed self type" pointer into ty::method
Refactor so that references to traits are not represented using a type with a
bare function store (which is not in fact a kind of value) but rather
ty::TraitRef.  Removes many uses of fail!() and other telltale signs of
type-semantic mismatch.

cc #4183 (not a fix, but related)
Fix various warnings, NOTEs, etc
Add comment explaining method visibility
rustc: Be careful about calls to fn types that contain nested errors
auto merge of #5676 : nikomatsakis/rust/issue-4183-trait_ref, r=nikomatsakis

These are a number of incremental steps towards #4183 and #4646.