db-analyser: replay up to --analyse-from before analysing
Previously, when starting an analysis from a ledger state, openLedgerDB
loaded the newest snapshot at or before --analyse-from but used an empty
stream, so no blocks were replayed. If no snapshot existed exactly at the
requested slot, the analysis silently started at the older snapshot's tip
instead of at --analyse-from.
Hand openLedgerDB the ImmutableDB and replay blocks on top of the chosen
snapshot up to the replay goal (the --analyse-from point), so the ledger
state is exactly there before the analysis begins. The stream stops at the
first block past the goal, mirroring the StartFromPoint behaviour where
the analyse-from block is the anchor and processing starts after it.
Emit a warning when no snapshot exists exactly at the requested slot, since
the replay from an older snapshot up to the goal can be slow.