Perform indexing concurrently

* Index each of the index shards in a concurrent goroutine

* Count number of files/directories differently due to concurrent
  refactoring. As a result, remove count of directories from the Repo
  datastructure.

* Use interfaces to allow for easier testing of the indexing code