Add means to handle negative capabilities in thread safety annotations
Summary:
This commit is separated from #19238, and it adds support of Negative Capabilities in the Clang Thread Safety Analysis attributes.
Negative requirements are an alternative EXCLUDES [LOCKS_EXCLUDED] that provide a stronger safety guarantee. A negative requirement uses the REQUIRES [EXCLUSIVE_LOCKS_REQUIRED] attribute, in conjunction with the ! operator, to indicate that a capability should not be held.
This is a backport of core#19249
Test Plan: ninja
Reviewers: #bitcoin_abc, majcosta
Reviewed By: #bitcoin_abc, majcosta
Differential Revision: https://reviews.bitcoinabc.org/D9937