This makes diagnostics more verbose and accurate, because
it's possible to distinguish how many parameters there are
based on the message itself.
Also there are multiple diagnostic messages in a format of
`<descriptive-kind> <decl-name> ...` that get printed as
e.g. `subscript 'subscript'` if empty labels are omitted.
Muffle the diagnostic if the witness is in a different DeclContext than the
conformance.
Also, don't complain about the witness not being @objc if the requirement
is unavailable.
Finishes up <rdar://problem/26183366>.
This was easy with a bit of refactoring, but eventually I'd love to
converge override checking and witness checking logic a bit more.
Fixes <rdar://26183366>.