This reduces the necessary locks to operations which really only
need to be locked, removing some of the ones which are not needed
around read only operations or operations which are thread safe
when used with dictionaries (popping a single item for example)
or checking if a *string* key is in a dictionary, or fetching a
dictionaries length...
Change-Id: I28a9d66afa7f7b733b2963b8cee3edd45696561b