When a jjb run is thrown when another jjb is already running, it can
cause corruption of cache. Start using a fasteners to ensure this
won't be happening and run securely on automated systems.
Ensure unlock is called from only the destructor, so that it is only
called when the JJB process is guaranteed to be finished using it.
Make it obvious that _lock is intended to be internal to the cache
storage implementation.
Potentially we may not need to call it at all, as python might unlock
it for us on exit by closing the file when no longer needed. However
better to make it explicit.
Change-Id: I53a1f92cf2bfbbe87c9ea205c377f93869353620