1. Changes progress bar code to allow headings for progress bar (so users have
some clue what's going on if a page has more than one progress bar).
2. Changes restore code so that a progress bar can display during pre-checks if
they take longer than 5 seconds.
3. Changes pre-check and restore code so that, in various points where the system
can take a long time within an individual step, intederminate progress is
indicated and it won't time out.
For $this->groupedpaths, using a key is faster as there is
no need to do in_array searches.
Parent cache allows dirname calls to be substantially reduced.
2048 was chosen as a cache size as this class operates on chunks
of the restore at a time, 8k questions produces a parent cache of
about 500 paths and uses 300K of memory. Scaling up to 2048 will
use about 1.2M of RAM for really large restores. This is acceptable
for the 48% function call reduction and the 10% runtime improvement
seen.