RT#77406 - allow attributes declared in roles to satisfy required methods

This pull request replaces #19.

It fixes RT#46347 and RT#77406, makes seven TODO test cases pass, and includes some additional tests on the same topic.

It allows an attribute defined in one role (including accessors, clearers, predicates, and delegated methods associated with that attribute) to satisfy a "requires" in another role.