Use binary search to update search index.
Use binary search to update search index.

There are 2**18 entries, which means we now do at most 18 checks rather
than a significantly larger number.  Where this helps is in the flusher
thread.  The one thread which flushes to disk does the invalidation, and
during heavy read/write workloads, latency went out the window because
the writes would back up in the in-memory WAL, and so each GET would
need to traverse the entire log.

pombredanne/HyperDex,pombredanne/HyperDex,UIKit0/HyperDex,jtk54/HyperDex,cactorium/HyperDex,rescrv/HyperDex,rescrv/HyperDex,rescrv/HyperDex,vashstorm/HyperDex,vashstorm/HyperDex,tempbottle/HyperDex,vashstorm/HyperDex,pombredanne/HyperDex,jtk54/HyperDex,tempbottle/HyperDex,jtk54/HyperDex,hyc/HyperDex,tempbottle/HyperDex,hyc/HyperDex,UIKit0/HyperDex,pombredanne/HyperDex,hyc/HyperDex,hyc/HyperDex,UIKit0/HyperDex,vashstorm/HyperDex,jtk54/HyperDex,tempbottle/HyperDex,pombredanne/HyperDex,pombredanne/HyperDex,cactorium/HyperDex,rescrv/HyperDex,tempbottle/HyperDex,pombredanne/HyperDex,cactorium/HyperDex,hyc/HyperDex,vashstorm/HyperDex,pombredanne/HyperDex,UIKit0/HyperDex,hyc/HyperDex,UIKit0/HyperDex,vashstorm/HyperDex,hyc/HyperDex,rescrv/HyperDex,tempbottle/HyperDex,UIKit0/HyperDex,rescrv/HyperDex,pombredanne/HyperDex,cactorium/HyperDex,tempbottle/HyperDex,tempbottle/HyperDex,jtk54/HyperDex,cactorium/HyperDex,cactorium/HyperDex,jtk54/HyperDex,rescrv/HyperDex,UIKit0/HyperDex,rescrv/HyperDex,cactorium/HyperDex,jtk54/HyperDex,jtk54/HyperDex,cactorium/HyperDex,cactorium/HyperDex,tempbottle/HyperDex,vashstorm/HyperDex,UIKit0/HyperDex,rescrv/HyperDex,vashstorm/HyperDex,UIKit0/HyperDex,jtk54/HyperDex,hyc/HyperDex,vashstorm/HyperDex