Require a non-nil Storage parameter in newLog.

Callers must in general have a reference to their Storage objects to
transfer entries from Ready to Storage, so it doesn't make sense to
create a hidden Storage for them.

By explicitly creating Storage objects in tests we can remove a
few casts of raftLog's storage field.
The initial term=0 log entry is now initially unstable.

This entry is now persisted through the normal flow instead of appearing
in the stored log at creation time.  This is how things worked before
the Storage interface was introduced. (see coreos/etcd#1689)
Remove raft.loadEnts and the ents parameter to raft.RestartNode.

The initial entries are now provided via the Storage interface.
Merge branch 'log-storage-interface' into multinode-storage

* log-storage-interface:
  Remove raft.loadEnts and the ents parameter to raft.RestartNode.
  The initial term=0 log entry is now initially unstable.
  Require a non-nil Storage parameter in newLog.