Generalize object and type parameter bounds

An RFC summarizing type system changes that close up rust-lang/rust#5723 and related bugs.
I guess I think that we can special case `&` at least because it is a special case in general (it even has special syntax), I wouldn't necessarily expect to apply the same rules to `Ref`. I agree `Box` is tricky since it should behave like a regular struct. (Although having to rarely have a redundant lifetime seems a price worth paying for simplifying the common case, unless I misunderstand the complications here).