etcdserver/etcdhttp: split out peers and add tests

I guess not, but potentially if something goes wrong we could end up with a lot of messages. Would you prefer `t.Errorf(); break` ?