LlvmMangler: Rewrite @function symbols to @object

LLVM annotates function symbols with `.type @function`. This causes the
assembler to relocate symbol references using the Procedure Linking
Table (PLT). The entries of this table are small trampolines which are
updated by the runtime linker to reflect the entry point address of the
linked image.

While relocations of this type work for calls, the garbage
collector will be very confused when it attempts to interpret this table
as a info table. For this reason, we need to ensure that LLVM relocates
Haskell closures with the Global Offset Table (GOT).

Unfortunately, LLVM does not appear to offer a mechanism for
accomplishing this. As a hopefully temporary hack, we use the mangler to
modify the assembler produced by `llc`, replacing `@function`
annotations with `@object`.