Generalize object and type parameter bounds

An RFC summarizing type system changes that close up rust-lang/rust#5723 and related bugs.
I would have thought that the lifetime restriction given by the type `&'a T` (i.e., that 'a must outlive T) is so fundamental to Rust that it is always safe to infer, even from type definitions.