Add Float to llvm::type_to_str.
Add a depth counter to llvm::type_to_str to work around infinite llvm types.
Make default method handling not choke on self region params. Closes #7341.
Make calling methods parameterized on the trait work from default methods.

This is done by adding a new notion of "vtable_self".
We do not yet properly handle super traits.

Closes #7183.
Actually resolve trait bounds on impls. Closes #7266.
Rework vtable_res to not be flattened. It is now a list of the resolutions for each param.
Improve handling of trait bounds on a trait in default methods.

This is work on #7460.
It does not properly handle certain cross crate situations,
because we don't properly export vtable resolution information.
Drop an unused field from param_substs.
Drop the impl_id field from fn_ctxt.
Add tests for some default method things.
auto merge of #7471 : msullivan/rust/default-methods, r=graydon

This fixes a bunch of default method bugs and restructures how vtable resolutions are represented.

(It also adds a depth counter to llvm::type_to_str as a hacky work around for our circular llvm types. This is related in the sense that I needed to do it to make debug tracing not cause rustc to crash after running out of stack space.)