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 
It would be fairly easy to make newLog return an error. For most of the other panics in this change it is harder to add an error return (the channels used in the Node interface mean that we can't easily get an error back to the application), but I agree we should move towards returning errors instead of panicking as much as we can.