add peer store

This store is designed for node register.

It is used instead of `Peer` for etcdserver to send requests and provide machine infos.

It is necessary to have such a struct to fit: 1. dynamic change on nodes 2. save/load from log/snapshot
1. it cannot move to current peers.go because etcdserver needs to call its functions in the future to add/remove node.
Or it may have circular dependency: etcdhttp -> etcdserver, etcdserver -> etcdhttp
2. It does build a thin layer on top of the store. I init PeerStore and pass it to Server in main.go now because 1. make it clear. one object takes responsibility for one service only 2. Sender needs PeerStore also to determine where to send message.
3. Peers and PeerStore are something different. Peers save its info in its own field, while PeerStore save the info in the Store.