Fix address patching in x86 loader

Fix a bug in final address calculation when loading a function entry (fe) and
an instruction with a constant (am_constant) or a closure (am_closure). The
final address is calculated as the sum of the base address (value) and the
offset (address).
Revert "hipe: Remove single function compilation"

This reverts commit 0aa3a8200025ae32c5aba11be5229fff19d03c7f.
We really need to have support for single function compilation in order to be
able to debug load and execution errors in ErLLVM.
Move some common code in hipe_pack_constants

All backends (e.g. arm, ppc, sparc, x86) share the same code for the following
functions:
  * find_const/2,
  * mk_data_relocs/2,
  * slim_sorted_exportmap/3, and
  * combine_label_maps/3

This commit moves those definitions (along with some helper functions) in
misc/hipe_pack_constants.erl. This is a structural change; no change in
semantics intented.
Add a BIF that only returns the atom ok

A call in llvm_fix_pinned_regs/0 is inserted in the beginning of LLVM unwind
blocks (i.e. code executed when an LLVM 'invoke' call triggers an exception)
in order to get the BP and SP registers right. This is needed because LLVM
exception handling doesn't provide the return value (that also contains the
values for these registers, as defined in the HiPE Calling Convention for
LLVM) on the 'landingpad's.
Add support for llvm unique symbols in hipe_gensym

This is used by the LLVM backend in order to generate unique names for
temporary SSA values and functions.
Extend RTL API to support the LLVM backend

Extend the 'rtl_var' definition to host liveness information needed for
a simple liveness analysis performed by the LLVM backend.

Also, uncomment some function definitions (mostly simple accessors) that
are already there and are useful for the translation of RTL code to LLVM
assembly.

Finally, extend the RTL 'call' instruction with the 'normalcontinuation'
field which is required for translating calls that are in the scope of
an exception handler. This extra field is required in order to point to
a new basic block which will hold the 'unwind label' of LLVM's invoke
instruction. While the 'unwind label' is semantically equivalent with
the 'failcontinuation', in LLVM this block must have a 'landingpad'
instruction. The problem arises by the fact that an RTL 'continuation'
block can also be accessible by other paths in the RTL CFG, and so
cannot be marked as a landing pad. To overcome this issue we create a
new block (the 'normalcontinuation') which is used as the 'unwind label'
of LLVM's invoke instruction and which will eventually transfer control
to the 'continuation' block.
Implement the LLVM backend
Support the LLVM backend in HiPE

Add flags to enable and use the LLVM backend:
  * to_llvm: use the LLVM pipeline for compilation (default optimization level
  is O3),
  * llvm_save_temps: save the intermediate files in current directory in order
  to be able to debug or optimize the LLVM assembly,
  * {to_llvm, O}: set the optimization level of LLVM opt and llc tools.

Add some debug support to the loader; no semantic change intented.