etcdserver: refactor non-blocking check for sync tests

to make it much more reliable and avoid false errors.
client: add SyncableHTTPClient.Endpoints
etcdctl: centralize getEndpoints logic
pkg/transport: generate TLS client config w/ only CAFile
etcdctl: add --ca-file, --cert-file, --key-file flags
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
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
etcdhttp: return 404 when removing nonexistent member
Merge pull request #1648 from jonboulle/delete_member_404

etcdhttp: return 404 when removing nonexistent member