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.
It is reasonable to meet `.broken` files I think.