Iterator compatibility fixed & abstract dependency

as casting to array fails for iterator object like doctrine's PersistentCollection and the IdentityInterface already dictates that you should return an array it is IMO safe to remove the cast and with it add the ability to use iterator objects as roles. This pull request also fixes the dependency of an abstract that not always adds value and replaces it with an interface dependency