This change gets Recipe 11 working. Here are the details ...
When a role (RoleA) does some other role (RoleB) and explicitly
aliases some method(s) from RoleB, those methods were always added to
the required method list for any consumer of RoleA. However, if RoleA
provides an implementation of those methods, they should not be
required by a consumer.
This fixes the recipe 11 tests. I also had to change some existing
role application tests, which explicitly tested for the old
behavior. Perigrin and I both agree that the old behavior makes no
sense, since what else is the purpose of aliasing a method in a role?
I also added some additional tests to make sure that when the aliasing
role _does not_ implement the method, it _does_ get added to the
required method list.