Add a writer that serializes annotation data in JSON format

So now we have a writer for it all. Actually, we have an abstract base
class that knows how to write annotations, but no code that discovers them
yet.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a real indexer

The DirectoryIndexer class knows how to parse a single class path element
(if it is a plain directory) and writes JSON-formatted annotation indexes.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add the @Indexable annotation

All annotations that are meant to be indexed by annindex need to be
annotated by this meta annotation.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add the Index class to access the annotation indexes

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add unit tests

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a Java 6-compliant annotation processor

This is loosely modeled after the way SezPoz does it, for the obvious
reasons: SezPoz' goals and the goals of this here annotation indexer are
almost the same.

Therefore, the developer learnt a lot from inspecting the source code of
SezPoz' Indexer6 class and then went on to re-implement the part that
inspects the AnnotationMirror instances here.

Since we are building an annotation processor here, we need to switch off
annotation processing during the compilation.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add an integration test for the annotation processor

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a helper for Eclipse

Eclipse is a bit challenged and challenging when it comes to following the
Java standard. For example, in the default mode Eclipse does not run any
annotation processors (as mandated by the Java specification).

To compensate for this, we simply run a custom annotation processor
whenever we encounter at Index.load() time that there might be some
annotation index that is out-of-date.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
WIP: Support incremental annotation indexing

... which includes removing annotations that are now obsolete...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>