Predictable gear uuids

https://trello.com/c/bUe7eOL6/290-enable-predictable-gear-uuids-ose
I would go with the second option. Take a look at reserve_uid and unreserve_uid for examples. We do atomic updates in mongo and then set the object's fields in memory as well so that the updated values can be referenced in any code that might follow. 

Even within a lock, we should use an increment operation (vs set) to ensure that stale values in the object in memory do not cause an incorrect value being set. Possible reasons of having stale values is when mongo updates are made outside the lock or when the memory object is not reloaded after an update.