[RFC] The callback attribute and abstract call sites

This is a follow up to my talk at the LLVMDev'18 meeting:
  https://llvm.org/devmtg/2018-10/talk-abstracts.html#talk20

tl;dr

We want to introduce the notation of a transitive and abstract call
sites into LLVM in order to improve IPO in the presence of function
pointers passed to (runtime) functions. A description, examples, and the
implementation can be found here [0].

We also want Clang to emit !callback metadata for library functions with
known callback behavior (pthread_create, qsort_r, __kmpc_fork_call,
__kmpc_fork_teams for now), as well as for manually annotated functions
that carry the "callback" attribute. Our implementation can be found
here [1].