Add syntax for negative implementations of traits

This commit introduces the syntax for negative implmenetations of traits
as shown below:

`impl !Trait for Type {}`

cc #13231
Part of RFC #3
Put negative trait implemtations behind a feature gate