Previously there were no messages for accounts that were closed
(lamports=0, owner=system_program) or reused for a different program
(which can happen in one tx).
Now messages contain an is_selected flag that lets the receiver know
whether its a message for a tracked account or just a follow-up message
for an account that used to be tracked.
Each node has an internal write_version counter. To deduplicate events
and produce a consistent database snapshot independent of the internal
count, we map it a per-slot-and-pubkey write version.
To do this correctly, we can only process account writes for slots where
all account writes will be received. This is a problem during startup,
where it's unclear what slots we have missed data for.
To make startup easier, let the plugin keep track of the highest slot
number that account writes have happened for, and send it when a new
consumer connects.