Generalize lifetime bounds on type parameters to support multiple lifetime bounds.

Generalize lifetime bounds on type parameters to support multiple lifetime bounds.
This doesn't really cause any difficulties, because
we already had to accommodate the fact that multiple implicit bounds
could accumulate. Object types still require precisely one lifetime
bound. This is a pre-step towards generalized where clauses (once you
have lifetime bounds in where clauses, it is harder to restrict them
to exactly one).

Strictly speaking, this modifies RFC 49, hence: https://github.com/rust-lang/rfcs/pull/242

r? @pcwalton