Raft: log storage interface and multinode integration

This branch introduces a pluggable interface for on-disk storage of logs, and brings MultiNode up to date with some upstream changes in the Node interface (the new Advance method). It's still something of a work in progress, but the next step is to implement this interface in cockroach to make sure it meets our needs before pushing it back upstream.

@spencerkimball @cockroachdb/developers 
Yeah, I was hoping to use this so every caller wouldn't have to pass in a Storage object, but since you have to call MemoryStorage.Append anyway it doesn't really make sense. I'll remove this and make sure that the remaining tests that pass nil create a Storage instead.