Make 'WarnUndefinedMethod' a static function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197206 91177308-0d34-0410-b5e6-96231b3b80d8
Change 'method X in protocol not implemented' warning to include the name of the protocol.

This removes an extra "note:", which wasn't really all that more useful
and overall reduces the diagnostic spew for this case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197207 91177308-0d34-0410-b5e6-96231b3b80d8
Make 'CheckProtocolMethodDefs' a static function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197208 91177308-0d34-0410-b5e6-96231b3b80d8
Refine 'objc_protocol_requires_explicit_implementation' attribute to better handle indirect protocols.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197209 91177308-0d34-0410-b5e6-96231b3b80d8