raft: introduce log storage interface.

This change splits the raftLog.entries array into an in-memory
"unstable" list and a pluggable interface for retrieving entries that
have been persisted to disk. An in-memory implementation of this
interface is provided which behaves the same as the old version;
in a future commit etcdserver could replace the MemoryStorage with
one backed by the WAL.
proxy: return JSON errors
proxy: add a todo for logging
Merge pull request #1685 from xiang90/proxy

proxy: return JSON errors
integration: rewrite the way to check cluster make progress
integration: newMember -> mustNewMember
Merge pull request #1682 from yichengq/217

integration: rewrite the way to check cluster make progress
raftpb: fix proto
Merge pull request #1686 from xiang90/proto

raftpb: fix proto
etcdserver: move newTestMember* to member_test.go
etcdserver: remove unnecessary newTestMemberp
etcdserver: use member pointer for all tests
Merge pull request #1688 from xiang90/cluster_test

Cluster test
transport: create a tls listener only if the tlsInfo is not empty and the scheme is HTTPS
*: support updating advertise-peer-url
Users might want to update the peerurl of the etcd member in several cases.
For example, if the IP address of the physical machine etcd running on is
changed, user need to update the adversite-pee-rurl accordingly.
This commit makes etcd support updating the advertise-peer-url of its members.
Merge pull request #1687 from xiang90/fix_listener

Fix listener
raft: update unstable when calling stableTo with 0

It should update unstable in this case because it may happen that raft
only writes entry 0 into stable storage.
raft: nodes return sorted ids

This makes raft.softState return the same result when its soft state is
not changed.
Merge pull request #1692 from yichengq/221

raft: nodes return sorted ids
Merge pull request #1679 from xiang90/peerurl

update peer url