Remove some unused code
Don't `reset` the `Batched_store` hashtable

Calling `Hashtbl.reset` to clear the cache used by `Batched_store`
results in lots of in-place mutation (looking at the implementation,
the call is dispatched to `Hashtbl.clear` due to the table size, which
modifies the underlying array entries one-by-one). This results in lots
of calls to `caml_modify`, which clearly shows up in profiling (5 to 6%
of runtime of a `set` benchmark goes into clearing the cache).

This commit changes the approach by not clearing the `Hashtbl.t`, but
using a mutable field in the `Batched_store` record instead, which is
replaced by a freshly allocated table. This results in some more strain
on the garbage collector, but clearly reduces the number of
`caml_modify` calls. As a result,
`Batched_store._apply_cache_to_local_store` goes from over 6% of runtime
to less than 0.4%.

Next to this, after the change a smaller table is allocated: instead of
pre-allocating a table of size `max_entries`, a smaller table is created
which can grow when necessary.
Merge pull request #452 from Incubaid/speedup-batched-store

Speedup batched store