raft: add a doc.go file

Explain the package from a high level.
raft: add useful comments

These comments were things I learned about the units, use case or
meaning of various fields and functions in the raft package.
Merge pull request #1066 from philips/add-raft-doc

add-raft-doc
etcdserver: introduce Server interface

This changes etcdserver.Server to an interface, with the former Server
(now "server") becoming the canonical/production implementation.
This will facilitate better testing of the http server et al with mock
implementations of the interface.
It also more clearly defines the boundary for users of the Server.
A NewServer convenience function is added to create the Server with some
default/production values.