Switch the code to use De Bruijn indices rather than binder-ids.
Introduce some sanity checking assertions in trans, erase regions more aggressively.
Make it an error to use parenthetical notation with
something other than a trait type.
Convert TyPolyTraitRef to accept arbitary bounds, so that things like
`Box<for<'a> Foo<&'a T> + 'a>` can be accepted. Also cleanup the visitor/fold
in general, exposing more callbacks.
Stop checking the correctness of explicit self twice; instead, just
use simple pattern matching to take a guess at what the method's self
category is in astconv, and check it more thoroughly later.
Miscellaneous reformatttings and renamings.
Test resolving of names with `for` binders.
Allow impl's to have late-bound regions. Introduces another level of
region binding at the impl site, so for method types that come from impls,
it is necessary to liberate/instantiate late-bound regions at multiple
depths.
Introduce machinery for higher-ranked TraitRefs
Update tests for `()` notation to use traits not structs
Update test for equivalency to include region binders in object types, add new tests relating to HRTB, consolidate the `unboxed_closures` and `overloaded_calls` feature gates.