*: expose etcd-index in watch requests

This adds a StartIndex field to the Watcher interface, which represents
the Etcd-Index at which the Watcher is created.

Also refactors the HTTP tests to use a table for most handleWatch tests
raft: do not decrease nextIndex and send entries for stale reply
raft: add comment to decrTo
Merge pull request #1207 from coreos/check_stale_resp

raft: do not decrease nextIndex and send entries for stale reply
raft: add test for maybeappend change
Merge pull request #1203 from coreos/fix_raft

raft: commitIndex=min(leaderCommit, index of last new entry)
Merge pull request #1187 from jonboulle/1187_watches_header

Watches do not return X-Etcd-Index header
main: move server configuration to etcdserver package
etcdserver: collapse dir configuration to DataDir
etcdserver: unexport EtcdServer fields where possible
Merge pull request #1096 from jonboulle/1096_embedded

simplify initialization of EtcdServer to support embedded etcd
etcdhttp: remove configurable timeout

It's slightly unclear why we expose this timeout as being configurable,
and the `-timeout` flag does not exist in 0.4.x, so for now, remove the
flag until we have evidence that it is needed.
Merge pull request #1215 from jonboulle/1215

Flag `-timeout` not descriptive
etcdserver: restore test coverage of cluster
Merge pull request #1238 from jonboulle/etcdserver_cluster

etcdserver: restore test coverage of cluster
raft: fix send
send should not attach current term to msgProp. Send should simply do proxy for msgProp without
changing its term. msgProp has a special term 0, which indicates that it is a local message.
Merge pull request #1240 from coreos/fix_proposal

raft: fix send
*:discovery hook up
Documentation: introduce the initial 0.5 clustering guide

Introduce the concepts of static initial cluster configuration and
document the flag migrations.
main: fail on peers/peers-file flags