Javaparser & ElimRepeated fixes & Annotation-fixes

This branch includes everything in #184 #183 and #206 
And additionally fixes several annotation-related errors.

Last commit rises two problems with reading annotations from java and java bytecode.
Java treats annotations which have array-value (eg `java.lang.annotation.Target`) as also having a repeated-argument constructor. Potential workaround could be to synthesize one more constructor for annotations.

The second problems comes from scala not having specific single-argument `apply` inside `Array$`. This means that calling `Array("hi")` goes through generic path and requires implicit resolution to provide a ClassTag.
This means that deferring reading annotations after `frontend` requires calling them with context at phase frontend. Which itself leads to errors as implicit resolution will start flowing Context owner chain and will see a non-perioded context as direct ancestor of current one.