on disk snap

## goal: 
1. save snap to disk
2. load snap from disk
3. detect corruption

## non-goal: 
1. glue with etcd.
2. async snapshotting. 
3. on disk log compact.
4. buffering and performance.
An optimization might be using mmap. Then we do not need to load the whole file into memory at once. 
Right now it is super inefficient,  as I mentioned in the non-goal section.