A bunch of Codex indexer improvements.

1. Indexer is now scoped to the ProjectSpace rather than per-project.

2. Extractors are now provided via plugins rather than having each special type
of project know about what kind of source files it might contain.

3. Projects now summarize their sources into SourceSet objects, which can be
passed straight on to the Codex extractors. Previously each project created its
extractor and specially enumerated the source files to pass to it, which was
messy and redundant.

An ExtractorPlugin might require that the project implement a particular
interface (e.g. JavaProject for the JavaExtractorPlugin) so that it can do
things like obtain the build classpath. But this is still simpler overall.
Show test output in proper window.