[merge] WorkingTree4 no longer uses the HashCache.
This saves 1-2s on a 'bzr status' in a 55k entry tree.
Locks are also updated to be non-blocking, and DirState will try to
write out its contents if it has been changed even if currently
read-locked, by trying to grab a write lock for the write.