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.
@unihorn I don't quite understand you comment. StepNode isn't a very useful func name for the server. The Do func is handling a user request which is what the server should be worrying about StepNode on the other hand is an implementation of serving the /raft endpoint... I will need to sleep on it but it seems like it should probably not be exposed in the interface or named much better.