Introduce jl_safe_printf(), fix jl_exit()/jl_init_tasks() init order
dependency.

jl_safe_printf() uses a statically allocated 1000 byte buffer to
vnsprintf() a message then calls write(2) to send it to stderr.

jl_safe_printf() is intended to be used in places where there is the
potential for out of memory, corrupted stack, re-entrancy etc.

The current jl_safe_printf() implementation is not 100% safe in all
situations, but it should be pretty good most of the time, especially
if the formatting is limited to %d.

The safety of jl_safe_printf() could be improved later, but at least
for now the places were safety might matter are identified by its use.

jl_safe_printf() is used in:

 - sigdie_handler()
 - sigint_handler()
 - _exception_handler()
 - catch_exception_raise()
 - gdblookup()

(jl_printf(), abort()) pairs in init_stdio_handle() reverted to the
original jl_errorf(). There should be no need for special handling here.

In _julia_init():

Moved the place that init_stdio_handle() is called to be after
jl_init_tasks().  This ensures that jl_current_task is not NULL
before the jl_atexit_hook()'s shutdown queue loop runs (this relies
on JL_TRY which relies on jl_current_task).  i.e. the uvlib versions
of JL_STD* are now not created until after the point where jl_exit()
will be able to properly clean up after them.