[API Notes] Allow versioned API notes to override information in headers.

When a versioned API note is used, allow it to override information
explicitly described in a header. This allows a workflow where the
headers are considered the "truth" for the latest version of Swift,
but version-specific API notes can reset the state of the headers back
to a prior version of Swift.

At present, this only effectively works for nullability, because most
of the Boolean or naming-related API notes fields don't distinguish
between "not specified" and "false/empty".

Part of rdar://problem/28455809.

(cherry picked from commit abcdca4e15477521394af9735db6b04c6f0d5892)
15 files changed