This is the funcref counterpart to 104bad5a. We introduce a new attribute
that marks a function pointer as a funcref. It also implements builtin
__builtin_wasm_ref_null_func(), that returns a null funcref value.
Completely refactored the initial solution to funcref implementation and design.
Now it works similarly to the __ptr32 attribute from -fms-extensions.
We keep _both_ attribute and address space through the frontend, which is then automatically
converted to the proper LLVM address space through the AddressSpaceMap.