When a crawl with FEED_EXPORT_BATCH_ITEM_COUNT (or FEEDS.batch_item_count)
and a %(batch_id) URI template was restarted with the same JOBDIR, the
in-memory batch counter reset to 1 and silently overwrote files produced
by the previous run.
Store the last successfully-written batch_id per uri_template in
<JOBDIR>/feedexport.state (JSON) and resume from last+1 on the next
run. The state file is only written when JOBDIR is set and the URI
template references %(batch_id), so non-JOBDIR crawls and time-only
templates behave exactly as before. Adds a regression test that runs
the exporter twice against the same JOBDIR and asserts prior batch
files are not overwritten.
Closes#5153