obshash: properly cache obshash value
The code was buggy and only cached non-nullid/non-inherited value. This was
previous hidden because we were using a 'propertycache' to cache the value on
the range object. This fixes it and restore a lot of performance.
#require test-repo pyflakes
Copied from Mercurial core (60ee2593a270)
$ cd "`dirname "$TESTDIR"`"
run pyflakes on all tracked files ending in .py or without a file ending
(skipping binary file random-seed)
$ hg locate 'set:(**.py or grep("^#!.*python")) - removed()' 2>/dev/null \
> | xargs pyflakes 2>/dev/null