parsers: fix a memleak, and add a clearcaches method to the index
This change also fixes a nasty memory leak: previously, self->caches
was not being freed.
The new clearcaches method lets us benchmark with finer granularity,
as it lets us separate the cost of loading a revlog index from those
of populating and accessing the cache data structures.
$ "$TESTDIR/hghave" unix-permissions || exit 80
$ hg init a
$ echo a > a/a
$ hg -R a ci -A -m a
adding a
$ hg clone a b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b > b/b
$ hg -R b ci -A -m b
adding b
$ chmod 100 a/.hg/store
$ hg -R b push a
pushing to a
abort: could not lock repository a: Permission denied
[255]
$ chmod 700 a/.hg/store