distclean: Fix ^C by moving cleanup into CLEANUP_HOOK
Kill all parallel children in exit_handler before cleanup - cleanup is not always called. This fixes lingering children in distclean+^C