Unlike Attributor, FunctionAttrs currently only supports inferring
nofree on functions. This PR adds support for inferring it on arguments
as well.
I've chosen to integrate this with the inference for
readnone/readonly/writeonly attributes, as the core logic for these is
the same.
There is a lot of test fallout. The only significant changes are in
llvm/lib/Transforms/IPO/FunctionAttrs.cpp and
llvm/test/Transforms/FunctionAttrs/nofree.ll.