Add a hasPermission method to check permission

For security models where roles are composites of any number of
permissions.  The intent is for this method to check if a given
permission exists in any of the roles assigned to the current user.

A second, optional parameter is also available to be used for
permissions with more fine-grained attributes.  It is intended to be
very specific to the underlying security model.