psgi: Ensure that we call any DESTROY hooks on psgix.harakiri.commit

Before this we'd just exit(0) and let the OS clean up after us, but
e.g. with post-buffering=1 we'll end up with a temporary file in /tmp
that we won't clean up when we exit unless DESTROY is called.

This resulted in us leaking files in /tmp if we ever had a request where
the last request before a harakiri was a POST request with a body we'd
buffer to /tmp.

We'd have similar leaks in any user-defined code that required DESTROY
to run.

Aside from this I'm still not very comfortable with what this whole code
here in psgi_plugin.c and psgi_loader.c is doing when managing the
interpreter(s). It:

 * Doesn't consistently call PERL_SET_CONTEXT() as described in "perldoc
   perlembed".

 * Nothing calls PERL_SYS_TERM() either.

 * Should we be calling uwsgi_perl_free_stashes() here too?

To test this:

    UWSGI_PROFILE=psgi python uwsgiconfig.py --build
    ./uwsgi --master --http-socket localhost:1234 --psgi t/perl/test_harakiri.psgi

Then elsewhere:

    curl 'localhost:1234?0'
    curl 'localhost:1234?1'

Both of those should emit "Calling DESTROY".
psgi: Move the destruction of the perl interpreter to the atexit hook + more bugfixes

My previous commit ensured that we called the DESTROY hook but we
wouldn't properly call the atexit hook. Now when you start uWSGI as
instructed in that commit you'll get this:

 * localhost:1234?0:

   $$: Calling DESTROY

 * localhost:1234?1:

   *** psgix.harakiri.commit requested ***
   ...The work of process 523 is done. Seeya!
   523: Calling the atexit hook
   523: Calling DESTROY

 * Ctrl+C (or stop):

   ^CSIGINT/SIGQUIT received...killing workers...
   696: Calling the atexit hook

Before this change we wouldn't call the atexit hook when
psgix.harakiri.commit was requested by calling localhost:1234?1.

To make this work I removed the "if busy do not run atexit hooks"
condition added in 1.4-rc2-246-g499202e. Of course uWSGI is going to
think the worker is "busy", it's busy being destroyed, that doesn't mean
we should skip running the atexit hooks.

We'll still skip them under the "if hijacked do not run atexit hooks"
condition added in that commit, and the "managing atexit in async mode
is a real pain" condition added in 1.0.1-289-gd7e8523. Maybe those are
further bugs that need to be solved, but I don't know how to test those
modes.

Now we'll also call PERL_SET_CONTEXT() and PERL_SYS_TERM() appropriately
during destruction. Note that the latter should only be called once even
if you have multiple interpreters.
psgi: Remove the check for the async mode in uwsgi_perl_atexit

According to Roberto this is just copy/pasted from the Python code, see
1.0.1-289-gd7e8523.
psgi: Don't free the wsgi_req->async_environ atexit, only in request context

The atexit hooks can be called outside of the request context. See the
discussion at https://github.com/unbit/uwsgi/pull/772
Merge pull request #772 from avar/avar/psgi-call-DESTROY-also-on-harakiri

psgi: Ensure that we call any DESTROY hooks on psgix.harakiri.commit