modifier: simplify modifier application

In __new__, defer modifier application until after the type is
constructed.  This greatly simplifies the modifier application
process and results in less work for the wrapper method.
attribute: return descriptor when read from class

ElkAttribute currently raises when trying to read the attribute on a
class.  This is not terribly useful, so return the descriptor itself.
roles: implement required attributes

Implement required attributes for roles via the ``__require__``
attribute.