Annotations DSL

Support for annotating classes, methods, and fields in DSL.

This change only supports 'visible' annotations. Only annotations with RetentionPolicy.RUNTIME will work.