Various improvements

* don't try to unlock() if the lock wasn't acquired properly
* attempt cache_load_2 even if lock was acquired immediately
this addresses the race condition case where a save in a worker happens exactly at the same as the load from another
* lower CRIT errors to ERR
* keep track of forcible shdict:set(), to track if the underlying shdict is too small.