Changes in this version relative to http://doclava.googlecode.com/
------------------------------------------------------------------

* Modified the Java stub generator code to write out annotations for
  methods and fields as well, not just classes. This meant adding a
  writeAnnotations call to writeMethod and to writeField

* Modified the writeAnnotations method to take a "isDeprecated"
  parameter, which when set adds a @Deprecated annotation if one
  doesn't already exist. This ensures that APIs only marked with a
  @deprecated documentation comment will also be marked as
  @Deprecated. Also strips out @Override annotations.
