apicheck: Allow safe addition and removal of final qualifier.

Split the CHANGED_FINAL error into ADDED_FINAL,
ADDED_FINAL_UNINSTANTIABLE and REMOVED_FINAL so that the
API check scripts can more precisely target policy around
changes to the final qualifier.

ADDED_FINAL_UNINSTANTIABLE covers the case of a class
that has become final but that was previously not
instantiable.  This change is safe since applications could
not have declared subclasses of their own.

Change-Id: I36a143bdbcffd04379788a55ff996b47398ba4fe
diff --git a/src/com/google/doclava/FieldInfo.java b/src/com/google/doclava/FieldInfo.java
index 0200b95..09391a6 100644
--- a/src/com/google/doclava/FieldInfo.java
+++ b/src/com/google/doclava/FieldInfo.java
@@ -438,9 +438,13 @@
       consistent = false;
     }
 
-    if (mIsFinal != fInfo.mIsFinal) {
-      Errors.error(Errors.CHANGED_FINAL, fInfo.position(), "Field " + fInfo.qualifiedName()
-          + " has changed 'final' qualifier");
+    if (!mIsFinal && fInfo.mIsFinal) {
+      Errors.error(Errors.ADDED_FINAL, fInfo.position(), "Field " + fInfo.qualifiedName()
+          + " has added 'final' qualifier");
+      consistent = false;
+    } else if (mIsFinal && !fInfo.mIsFinal) {
+      Errors.error(Errors.REMOVED_FINAL, fInfo.position(), "Field " + fInfo.qualifiedName()
+          + " has removed 'final' qualifier");
       consistent = false;
     }