Create distinct types for a PolyTraitRef (with bindings) and a normal TraitRef.
Rename the code that replaces unbound variables to "freshen" rather than "skolemize" -- strictly speaking, this is not skolemization, because it is not discharging quantifiers. Also, the trait selection code will still be doing true skolemization, so it would be a confusing overlap of names.
Add (currently unused) helper routine for skolemizing bound regions.
Centralize on using `Binder` to introduce new binding levels, rather than having FnSig carry an implicit binding level.  This means that we be more typesafe in general, since things that instantiate bound regions can drop the Binder to reflect that.
Move `leak_check` into its own method, and ensure that all higher-ranked code is in
`higher_ranked.rs`.
Make all predicates higher-ranked, not just trait references.