unify diagnostics for different nodes, using the same "type mismatch" messages throughout

revert to previous strategy to call  bindArguments from resolveTypesFor:
+ now that annotations are no longer inherited, defaults must be applied first
  and we must have annotations of super methods evaluated from defaults 
  before doing the inheritance check.
+ include fillInDefaultNullness in bindArguments
+ also force-trigger type.getAnnotationTagBits() before bindArguments
  because only then we know if the type has a default annotation

Synthetic Annotations also need declarationSourceEnd (otherwise ASTConverter fails)

Started to update the quickfixes to the current implementation (Work in progress)
+ after unifying IProblems we will have to do more analysis on the AST
  to find out what correction to apply

Reorganized tests (extract better suitable runTestXYZ methods)
and update expected compiler messages
diff --git a/contrib/org.eclipse.objectteams.jdt.nullity/src/org/eclipse/objectteams/internal/jdt/nullity/problem_messages.properties b/contrib/org.eclipse.objectteams.jdt.nullity/src/org/eclipse/objectteams/internal/jdt/nullity/problem_messages.properties
index 4c5d473..83d86e2 100644
--- a/contrib/org.eclipse.objectteams.jdt.nullity/src/org/eclipse/objectteams/internal/jdt/nullity/problem_messages.properties
+++ b/contrib/org.eclipse.objectteams.jdt.nullity/src/org/eclipse/objectteams/internal/jdt/nullity/problem_messages.properties
@@ -11,19 +11,13 @@
 
 ### addition for /org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
 ### NULL ANNOTATIONS
-910 = Type mismatch: returning null from a method declared as @{0}
-911 = Type mismatch: return value can be null but method is declared as @{0}
-912 = Potential type mismatch: insufficient nullness information regarding return value while the method is declared as @{0}
-913 = Type mismatch: passing null to a parameter declared as @{0}
-914 = Type mismatch: potentially passing null to a parameter declared as @{0}
-915 = Potential type mismatch: insufficient nullness information regarding a value that is passed to a parameter declared as @{0}
-916 = Type mismatch: assigning null to local variable {0}, which is declared as @{1}
-917 = Type mismatch: potentially assigning null to local variable {0}, which is declared as @{1}
-918 = Potential type mismatch: insufficient nullness information regarding a value that is assigned to local variable {0}, which is declared as @{1}
-919 = Buildpath problem: the type {0} which is configured as a null annotation type cannot be resolved
-920 = The return type is incompatible with the @{1} return from {0}
-921 = Illegal redefinition of parameter {0}, inherited method from {1} declares this parameter as @{2}
-922 = Illegal redefinition of parameter {0}, inherited method from {1} does not constrain this parameter
-923 = Missing null annotation: inherited method from {1} declares this parameter as @{2}
-924 = Potential null pointer access: The method {0} may return null
-925 = Redundant null check: The method {0} cannot return null
+910 = Type mismatch: required '@{0} {1}' but the provided value is null
+911 = Type mismatch: required '@{0} {1}' but the provided value can be null
+912 = Potential type mismatch: required '@{0} {1}' but nullness of the provided value is unknown
+913 = Buildpath problem: the type {0} which is configured as a null annotation type cannot be resolved
+914 = The return type is incompatible with the @{1} return from {0}
+915 = Illegal redefinition of parameter {0}, inherited method from {1} declares this parameter as @{2}
+916 = Illegal redefinition of parameter {0}, inherited method from {1} does not constrain this parameter
+917 = Missing null annotation: inherited method from {1} declares this parameter as @{2}
+918 = Potential null pointer access: The method {0} may return null
+919 = Redundant null check: The method {0} cannot return null