librustc: Parse and resolve higher-rank lifetimes in traits.

They will ICE during typechecking if used, because they depend on trait
reform.

This is part of unboxed closures.

r? @nikomatsakis 
please use distinct identifiers for the lifetime (`'a` above) and the mod in the path (`a` in `a::B`, above), in an attempt to avoid confusing someone trying to extract our grammar from the parser source.