Same directory tree for annotations, invalid chars in library names fix

- implemented an option to output all annotation results to the same directory tree (instead of creating a separate subtree for each library in the output directory).

Now when picking a library with the following symbols in its name (defined in project properties):
  \/:*?\"<>|
  AND putting every library's annotation into separate directory subtrees, we will replace these symbols for underscores in names of directories, containing subtrees.
  The reason is that these characters are not allowed as parts of filenames (i.e. in Windows).
plume lib added
scene lib added
KAnnotator's dependency type from Jung library changed to 'Test'
scene lib: AnnotationDef implements Comparable.
DefCollector uses now a TreeSet of AnnotationDef, so the annotations it collects are stored in alphabetical order.
scene lib: SceneAnnotation implements Comparable.
scene lib: Removed useless comment in SceneAnnotation.java
scene lib: Bugfix in TypePathEntry: %i for "tag" was not valid
scene lib: Replaced LinkedHashMaps with TreeMaps. InnerTypeLocation is now comparable.
scene lib: Renamed field "type" of AElement class to "thisType" to avoid clash with Kotlin keyword
scene lib: All those methods of IndexFileParser, who need PrintWriter, accept it as a parameter now. OurDefCollector is now constructed using this PrintWriter rather than using an outer class field.
scene lib: Extracted method writeClass from write.
scene lib: Can now produce a map from class names to their jaif representations
scene lib: Now we output explicitly even those jaif records, that contain no annotations.
Removed useless import.
Added a commentary to explain how getSignatureDescriptor is intended to work
Can now produce annotations in Jaif format
scene lib: More annotations.
This library now depends on KotlinJavaRuntime because of @KotlinSignature usage.
Can now filter annotations in a scene or transform them
Useless casts removed