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.
I disagree. I think if configurability becomes an issue, we can re-evaluate, but generally the simpler the interfaces are between packages, the better. Consider this comment on the `Start()` function:
``` 
// Start prepares and starts Server in a new goroutine. It is no longer safe to
// modify a Servers fields after it has been sent to Start.
```
If we limit the interface to something along the lines of my suggestion, this becomes a non-issue; the Server's fields simply aren't exposed outside of the package, so callers cannot make this mistake.

I also don't think the `http.Server` is a great example; I'm not terribly fond of the structs in the http libraries, they tend to be quite bloated.