storage: Refactor some storage components to prepare for Raft integration
This MR contains some independent commits which are a part of Integrate etcd/raft life cycle to Gitaly's WAL ... (!7553 - merged). I cherry-picked them out as an independent MR to reduce the number of file changes of the original MR.
Those commits prepare the storage package to be ready for etcd/raft integration, including:
- Move manifest CRUD methods from TransactionManager to wal package
- Remove fsync system call after writing the manifest
- Create snapshot locks remote lazily instead of pre-creating them before a log entry is appended.
- Add LSN to certain test hooks of Transaction Manager
- Centralize errSimulateCrash emitter in Transaction Manager's tests.
They are quite self-contained, safe, and don't change any functionality of WAL.
Edited by Quang-Minh Nguyen