add commit cache (feature #622)

I think it means that the keys of the objects represent paths and their value is
either the uncommitted node or `false`.