Created DirectoryTracker so that each index set uses a single directory instance. Made indexers/searchers disposable and added cancelation tokens to the indexing process. Made the examine manager web aware so that when the app shutsdown it disposes the indexers/searchers. Ensures that the indexing process is cancelled on disposal, ensures the indexing process is cancelled during a rebuild. Adds finer locking to the indexing process and acquiring a writer. Makes the writer a persistable/open writer as long as the app is alive, same for the reader and searcher. This should be better for performance and threading.