If the block implicitly referencing self doesn't escape, there is no risk of creating retain cycles, so clang shouldn't diagnose it and force users to add self-> to silence the diagnostic.
Also, fix a bug where clang was failing to diagnose self referenced inside a block that was nested inside a c++ lambda.
rdar://problem/25059955
Maybe call this "diagnoseBlockDecl" or something so it doesn't sounds like a CRTP-overridden method.