Make ProgramElement an 'in' type parameter on annotations(), optionalAnnotation() and sequencedAnnotation(), so that type inference doesn't infer union types, which make raw invocations of optionalAnnotation() cause javac to stackoverflow. Avoids problem described in ceylon/ceylon-compiler#1272.