runtime: replacing "orphaned" calls to malloc/calloc/realloc/free with calls to caml_stat_*

A few more wrappers are added (caml_stat_alloc_noexc, caml_stat_resize_noexc,
caml_stat_calloc_noexc) which do not throw an exception in case of errors and
offer a compatible substitute to the corresponding stdlib functions.
runtime: added a compactified version of halloc (http://swapped.cc/halloc)
runtime: caml_stat_* functions now use a halloc-based global memory pool
runtime: caml_shutdown function added
runtime: caml_finalise_heap function added

(forced finalisation of all heap-allocated values)
runtime: caml_free_shared_libs function added

(unload all the previously loaded shared libraries)
runtime: disabled the RTLD_NODELETE option in the call to dlopen in unix.c

Because of this option it was impossible to unload shared libraries on Unix.
The reason why it was there in the first place is shrouded in mystery.
runtime: the great merging of asmrun/startup.c into byterun/startup.c
runtime: allowing for repeated calls to caml_startup and caml_shutdown
runtime: caml_final_do_all_calls function added

(forced finalisation of all values registered with caml_final_register)