Initial type annotation support

Handle binding of type annotations, evaluation of type annotation
arguments, and lowering to bytecode for all type annotations kinds that
can appears in headers.

Currently type annotations are identified syntactically, we need to read
@Target to deal with ambiguous declarations on fields and method return
types (e.g. `@A int x;` could be `TYPE_USE` or `FIELD` or both).

MOE_MIGRATED_REVID=137566512
24 files changed
tree: 166d0741c1cebf6929b1ea5b0fe23a388fed83dd
  1. java/
  2. javatests/
  3. proto/
  4. .gitignore
  5. LICENSE
  6. pom.xml
  7. README.md
  8. turbine.iml
README.md

Turbine

Turbine is a header compiler for Java.