Added User pending-op-group/pending-op functionality
Added pending op groups for user add_ssh_keys/remove_ssh_keys

lock_user/unlock_user changes:
 - pass user.id/app.id instead of user/app mongoid objects.
   This will help anyone with bson id does not have to fetch corresponding mongoid model to acquire user lock (eg: oo-admin-repair)
 - app.id is optional to acquire user lock. Once user lock is acquired, no one should get application lock to avoid deadlocks.

Any pending op related to capabilities will be protected by application and user lock or just user lock if app is not involved.

Fix oo-admin-clear-pending-ops: Use run_jobs for user and app

Fix oo-admin-ctl-user: Take user lock for updating user capabilities

Fix test cases

Added new test cases for Lock model

Default app_user_lock timeout is 15 secs and default user_lock timeout is 15 secs. User lock with heavy ops like plan update has timeout of 30 mins similar to app timeout.

More fixes + cleanup
Merge pull request #4824 from pravisankar/dev/ravi/car587

Merged by openshift-bot