Returns the current sync state between the on-disk Pinweaver hash tree and
the on chip Pinweaver hash tree.
Detects if there is an existing |hash_tree| in which case it will
load it from disk. If no |hash_tree| exists the |CredentialManager| will
reset the CR50 via |pinweaver| and create and store a new |hash_tree|.
Replay state is responsible for moving the disk persisted |hash_tree| one operation
forward in time from the information provided in the |log_to_replay|. A given CR50
LogEntry can define one of four missed operations which the replay_state function
is responsible for reproducing locally so that the tree is in sync.
Provisions a new |hash_tree|. This clears the lookup table and then
calls |PinWeaverProtocol::reset_tree| to reset the CR50. It then
constructs a new |hash_tree| and persists it to disk.
Detects if there is a difference between the stored root hash in the |hash_tree|
and the root_hash returned by |pinweaver|. If the root hashes do not match then
a recovery flow is entered to attempt to resync the chip with the stored state.