Change private structs to have private fields by default

This was the original intention of the privacy of structs, and it was
erroneously implemented before. A pub struct will now have default-pub fields,
and a non-pub struct will have default-priv fields. This essentially brings
struct fields in line with enum variants in terms of inheriting visibility.

As usual, extraneous modifiers to visibility are disallowed depend on the case
that you're dealing with.

Closes #11522
Fix privacy fallout from previous change
auto merge of #11777 : alexcrichton/rust/issue-11522, r=pnkfelix

See #11522, but the idea is for private structs to have private fields by default, whereas public structs will continue to have public fields by default.