Role composition can be thought of as much more clever and meaningful
multiple inheritance. The basics of this implementation of roles is:
- If a method is already defined on a class, that method will not be
  composed in from the role.
- If a method that the role "requires" to be implemented is not
  implemented, role application will fail loudly.
