consistenthash: replace linear search with binary search

The binary search quickly out-paces the linear search, even for a small
number of shards and replicas.

benchmark          old ns/op    new ns/op    delta
BenchmarkGet8            122          122   +0.00%
BenchmarkGet32           471          137  -70.91%
BenchmarkGet128         5619          254  -95.48%
BenchmarkGet512        90302          406  -99.55%
removed extra unesacping in http pool that screwed up the keys we were using
Merge pull request #26 from dgryski/consistenthash-binary-search

consistenthash: replace linear search with binary search
Merge pull request #27 from EverythingMe/remove_extra_unescaping

removed extra url-unescaping in http pool
changed default number of replicas in http pool hash ring to 50, and fixed hash ring benchmark
Merge pull request #30 from EverythingMe/fix_replicas

changed default number of replicas in http pool hash ring to 50
allow all options of HTTPPool to be specified by users
Merge pull request #33 from fumin/master

allow all options of HTTPPool to be specified by users
goprotobuf has moved to GitHub

code.google.com/p/goprotobuf to github.com/golang/groupcache
Merge pull request #40 from ukai/protobuf

goprotobuf has moved to GitHub
Reduce allocations

Store temporary buffers in a sync.Pool.

Create one httpGetter per peer when Set() is called so we don't allocate
a new one on each call PickPeer().