Stop accepting 'impl ...;', require {} instead

Progress on #7981
auto merge of #9336 : alexcrichton/rust/issue-7981, r=catamorphism

Progress on #7981

This doesn't completely close the issue because `struct A;` is still allowed, and it's a much larger change to disallow that. I'm also not entirely sure that we want to disallow that. Regardless, punting that discussion to the issue instead.