Forbid `priv` where it has no effect

This is everywhere except struct fields and enum variants.

This addresses concerns that I had in #8122, but it doesn't remove the keyword yet because it's still useful.