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 
Yes, in that case we'd remove this i==0 check as well as all firstIndex checks from raftLog, and make Storage solely responsible for bounds checks on the stable log (raftLog would still have to do its own checks for the unstable portion).