etcdserver: refactor non-blocking check for sync tests

to make it much more reliable and avoid false errors.
etcdmain: use StringsFlag for initialclusterstate
client: add error handling for addmember
Merge pull request #1632 from jonboulle/cs_flag

etcdmain: use StringsFlag for initialclusterstate
Merge pull request #1636 from xiangli-cmu/client

client: add error handling for addmember
etcdserver: refactor sender

1. restrict the number of inflight connections to remote member
2. support stop
etcdserver: discard messages if sender reaches max serving

It is the correct thing to do to ensure that the communication is full
of out-of-date messages.

It results in that integration testing is very easy to throw MsgProp away,
and makes client wait until 5 min timeout. Sync interval and heartbeat are
increased to alleviate the traffic.
etcdserver: fix data race in Cluster struct
etcdserver: code clean on sender struct
etcdserver: add/remove sender in sendhub explicitly
raft: remove raftLog.resetUnstable and resetNextEnts

These methods are no longer used outside of tests and are redundant with
the new stableTo and appliedTo methods.
Merge pull request #1641 from bdarnell/remove-raftlog-reset

raft: remove raftLog.resetUnstable and resetNextEnts
etcdserver: better logging for clusterFromPeerURLs
Merge pull request #1638 from xiangli-cmu/better_logging

etcdserver: better logging for clusterFromPeerURLs
pkg: fix SetFlagsFromEnv behaviour

This function was fundamentally buggy, as a panic could be trivially
triggered by setting the wrong environment variable (e.g.
ETCD_BIND_ADDR=foo). Instead, let's propagate the error and present it
to the user in a cleaner way.
Merge pull request #1505 from yichengq/193

etcdserver: refactor non-blocking check for sync tests
discovery: add command line flag for discovery-proxy
flag: split out SetFlagsFromEnvBad test; declare return error
Merge pull request #1643 from jonboulle/fix_flags

pkg: fix SetFlagsFromEnv behaviour
etcdserver: add sendHub tests