libsyntax: Allow `+` to separate trait bounds from objects.

RFC #27; issue #12778.

After a snapshot, the old syntax will be removed.

This can break some code that looked like `foo as &Trait:Send`. Now you
will need to write `foo as (&Trait+Send)`.

[breaking-change]

r? @alexcrichton
It looks like this method may want to get renamed, and the second value of the tuple should be `OwnedSlice` instead of `Option<OwnedSlice<...>>`