librustc: WIP to implement arbitrary lifetimes in trait objects.

WIP; do not merge yet. This is here to get early feedback for my solution to #5723.

feedback? @nikomatsakis