Fix rare race condition in Forseti lock manager

When doing a release-all on a forseti lock client which held one or more
upgraded exclusive locks (eg it originally held a shared lock and then
upgraded it), if another thread acquired a shared lock right when the client
was releasing its exclusive lock, the client could end up in a bad state.

This resolves this race by discarding references to local shared locks if they
have been upgrade when we do a release-all on every lock the client holds.
Merge remote-tracking branch 'origin/master'