Allow LLVM-based communication optimization to use inline runtime fns

[Reviewed by Tom and Greg]

A TODO from r21431 was that the Chapel runtime functions which are
produced by lowering LLVM global-address-space operations were using
external function calls and could not work with inlined functions.
Recall that with --llvm-wide-opt, global memory operations previously
code generated as put or get are generated as load/store/memcpy;
then LLVM optimizations are run; and finally they are lowered
back to the Chapel runtime's put/get/etc.

The problem was that if the put/get/etc functions were inline,
they would not exist by the time the llvmGlobalToWide optimization ran.
This patch fixes the problem, so put/get/etc are now inline.

As a result the ptrans benchmark is almost 2x faster
with --fast --llvm --llvm-wide-opt on my system as compared to
the C backed (--fast).

In order to do it - I had to perform three kinds of changes:
1) The runtime needs the --llvm-wide-opt dependencies to now be inline
    functions and the symbol versions are no longer needed.
2) The LLVM infrastructure does not allow one to just keep a pointer
    to a function throughout optimization, since that function
    might be replaced during optimization. It is necessary to use
    an llvm::TrackingVH in these cases in order to catch updates
    to the function value.
3) The interface to the llvmGlobalToWide pass now takes in
    llvm::TrackingVH for the Function pointers for the runtime functions
    (instead of using the function name).
4) Even with a TrackingVH, if an optimization deletes the tracked
    value, bad things will happen. In this case, since the relevant
    put/get/etc functions are marked inline, the LLVM inliner will
    remove them before the global-to-wide optimization runs. So,
    we add a dummy function which uses the addresses of these functions.
    That use prevents the inliner from totally removing the function.
    The llvmGlobalToWide pass will delete this dummy function after
    it completes its work.



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@21868 3a8e244f-b0f2-452b-bcba-4c88e055c3ca