[Attributor] Use internalized version of non-exact functions

This patch internalize non-exact functions and replaces of their uses

with the internalized version. Doing this enables the analysis of

non-exact functions.

We can do this because some non-exact functions with the same name

whose linkage is `linkonce_odr` or `weak_odr` should have the same

semantics, so we can safely internalize and replace use of them (the

result of the other version of this function should be the same.).

Note that not all functions can be internalized, e.g., function with

`linkonce` or `weak` linkage.

For now when specified in commandline, we internalize all functions

that meet the requirements without calculating the cost of such

internalzation.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D84167