User Permissions: Edit, Add, Destroy & Role management

refs #3083, closes #3096

### Changes to permissions
In order to implement advanced permissions based on roles for specific actions, we need to know what role the current context user has and also what action we are granting permissions for:
- Permissible gets passed the action type 
- Effective permissions keeps the user role and eventually passes it to permissible

### User Edit

- permissions are now properly restricted by role

### User Add

- in progress

### Role API

- Added some tests 
- Fixed the issue with browse, which was much easier as a result of my changes to the effective permissions