Implement a gross hack to bypass call to exit() in hs_main().
Implement a gross hack to bypass call to exit() in hs_main().

A Haskell main() function is defined in terms of hs_main(), defined in
the RTS. This function never returns, because it always calls exit() at
some point. This prevents Spark from doing any cleanup, so we need to
avoid exiting so early like that. This patch uses longjmp()/setjmp() to
bypass the call to exit() if the exit code is 0.

tweag/sparkle,tweag/sparkle