Added support for soft deletes and expiration dates on role assignments

For my application I wanted to be able to assign roles which would expire and I wanted to keep historical records of role assignments. Thought these additions may be useful generally. I didn't write any test cases but if you want to pull this into your package I can do so. 

Cheers,
Darryl