Add visit_attribute to Visitor, use it for unused_attribute

The lint was missing a *lot* of cases previously.
I actually meant completely remove `name_str_pair`, but maybe that would just be annoying for `rustdoc` et al.?