It seems easy to miss the convention that Sui certificates have to be
added to the `pending_certificates` table before `enqueue()` to
`TransactionManager`. Also, the `pending_certificates` table as retry
log is unnecessary in for checkpoint and short-circuit owned object
transaction executions. This change makes storing certificates in the
`pending_certificates` table optional, by keeping enqueued certificates
in memory. Unnecessary writes to the `pending_certificates` table have
been removed (although they shouldn't matter much).
Initially I was a bit concerned about memory usage when there are many
pending transactions. But certificates are kept in memory in other
places as well, e.g. Narwhal output, checkpoint executions. The only
potential issue is that when a node is lagging, and a user sends a lot
of recent transactions to the node, memory usage would grow. For
protection, it seems feasible to reject `handle_certificate()` request
when the node is lagging.