Fixed a memory leak, and changed Index internals

I was using ConcurrentHashMap for Index, and decided to use a synchronized
BiMap from guava instead.  I'm hoping it'll be a little better.