add log abstraction to store records in disk

@xiangli-cmu 
This adds _log_ and _message_ abstraction.
I haven't thought about how to batch encoding yet. It had better be considered in snapshotting.

No needs to have bufio here since OS already buffers IO for you. Double buffer is evil in database.