improves handling of classfile annotations

Inner class and runtime retention checks are moved from annotation definition
time to actual usage time, because manual instantiation of annotations
is not only allowed in Java, but is actually used by people.

Runtime retention is now governed by @java.lang.annotation.Retention,
exactly following the way it’s done on the JVM. If users plan to have
their annotations retained until runtime, they have to explicitly annotate
annotation classes with @Retention(RUNTIME). Runtime reflection isn’t
actually implemented, and users who will try to use it will be welcomed
by the usual implementation restriction message, which has now become
a compilation error, because it’s now an opt-in.

I would like to follow https://groups.google.com/forum/#!topic/scala-internals/8v2UL-LR9yY
to the letter, getting rid of StaticAnnotation and ClassfileAnnotation,
but it’s not directly required for this pull request, which is about
reflection API, so it can wait.