Got rid of ReadIndex in favor of BuildIndex*

These are some significant changes.  The first was to base everything off of the
 class.  This is important because it means the index can come from
somewhere other than a file.  This was pretty straightforward.  The other change
was to make it so we don't create new indices, but rather build up indices.  The
essential point here is that each call to  adds the library data from
that source to the existing index.  This will allow users to specify a collection
of indices where the last one takes precedence.  This is useful, for example, when
users have private indices as well as public ones.

The big new thing with this version is that the client actually goes out and fetches
the real index data from  now.  Lots of command line options and
config files need to be build up here, but the basic core piece seems to be
working now.