Permissions Improvements

refs #3083, #3096

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
- Fixed spelling
- Still needs tests
Improving error handling
Adding role API tests & fixing browse

refs #3083, refs #3196
User edit, add & destroy perms restricted by role

closes #3096, closes #3378, refs #3100

- user.permissible updated to reflect proper permissions
- small amount of API refactoring to handle extra cases
- extensive integration testing
Merge pull request #3395 from ErisDS/issue-3096

User Permissions: Edit, Add, Destroy & Role management