PGLog: create interface allowing interface user to cleanup/rollback
We need to be able to allow the PGLog interface user to provide
logic for rolling back and trimming log entries. To that end,
serveral PGLog methods now take a LogEntryHander.
In PGLog::merge_old_entry, if prior_version > info.log_tail and
the object is not missing, we must have rolled back the prior
log entry. Thus, we don't skip the entry.
To simplify the code, _merge_old_entry has been split out as
a const helper. This way, proc_replica_log can be reexpressed
as merging the divergent replica log entries with the fully
merged authoritative log.