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's referring to *double* colons actually: `foo::bar::<T>`.