Fix exception thrown when trying to use the Team menu
Created originally on Bitbucket by colin-hurley (Colin Hurley)
Was already merged in Bitbucket before import, marked as merged by the import user
This changeset reimplements the performance improvements made for #599 (closed) to avoid exception conditions that were introduced due to bad assumptions/understanding of the internal workings of MercurialStatusCache. Instead of trying to parse the existing integer bit mask status into its FileStatus enum equivalents, this new implementation updates MercurialStatusCache to start using the new HgRootStatus class as an auxiliary status cache. This will avoid further errors from appearing due to misunderstanding of the existing implementation. At the moment, this also means that MercurialStatusCache now has one more copy of the repository status cached in-memory (the new status now cached by HgRootStatus, and the original status maintained as bit masks), but this will hopefully be only a temporary condition since I would like to phase out the bit mask implementation entirely in favor of the new HgRootStatus-based implementation that has been started here. Additional details describing the shortcomings of the bit mask implementation and the proposed HgRootStatus replacement are included as developer comments in MercurialStatusCache.
Also, I retired the PathStatusProvider interface since HgRootStatus is ultimately where I was headed with it. Now that the initial HgRootStatus implementation is here, the interface seemed superfluous.
fixes #606 (closed)