Move APPLY_TAINT_PROPER macro for general use.

The pp functions being removed from Perl_apply will need it.
Extract Perl_taint_if_args_are_tainted() from Perl_apply().

This is the last of the non-trivial code shared by all the ops in Perl_apply().

The name is a best guess at what this function does.
Extract pp_kill from Perl_apply().
Extract Perl_pp_chmod from Perl_apply.
Extract Perl_pp_unlink from Perl_apply
Extrat Perl_pp_utime from Perl_apply.
Extract Perl_pp_chown from Perl_apply.

And that is the end of Perl_apply!
Merge pull request #12 from evalEmpire/refactor/destroy_Perl_apply

Turn unlink, chmod, chown, utime and kill into their own ops.

Eliminates Perl_apply().  Makes it much easier to add autodie to these functions.

* The VMS parts may not have been extracted properly. There may be some left over break statements from when the code was in a case statement.
* Perl_taint_if_args_are_tainted() is just my best guess at what the function does.
* There's likely plenty of opportunities now to clean up each extracted op.
Move the functions to get errno into their own file.

This is needed to populate the autodie::exception object.  I picked
the code from making $! to best simulate how the Perl code does it.

This function would probably be useful to normalize all the ways
errno is accessed in the code, possibly splitting it into a function
to get the number and string parts.
Put autodie into truncate().

This is an experiment to get it working.  The code now hard coded in truncate will
later be moved into functions for use elsewhere.

* truncate has been removed from autodie.pm.  That should probably be
  conditional based on the Perl version.
* ok !eval { use autodie; truncate(...) } is erroring, need to figure that out.
* Much of the code here will be put into subroutines.
* caller, file, line and package cannot be passed into autodie::exception
  and it's getting the calling routine wrong.
Don't do any work for the exception handling until there's an error.

This is for several reasons...
* Efficiency
* Avoid using a tied file argument twice (see t/op/tie_fetch_count.t)
* Keep all the exception handling code together to make it easier
  to extract into a function.
Fix getting function arguments so it's repeatable.

Getting the args would only work once.  The key was SP = MARK after av_make().
I failed to crib that from pp_anonlist().  I guess that was leaving the stack
in a weird state, or the mark... not sure.

I also made sure to POPs the return value from call_method() before PUTBACK
to better emulate what's in perlcall.

Added some tests to make sure we can get the args more than once.
ok !eval { use autodie; truncate(...) } would panic: memory wrap.

Now it won't, probably because I'm handling getting function arguments
correctly and not leaving a messed up stack.
Allow caller information to be passed into autodie::exception->new

This is necessary when creating an autodie::exception object inside a
Perl op, autodie::exception cannot guess the caller correctly.  It's
probably faster and more accurate than guessing with caller.

Passing in undef is allowed and is not overwritten by a default.
caller will be undef if an IO function is called outside a
subroutine.

Also remove a vestigial use of errno.
Pass in all the caller information to autodie::exception->new.

It can be determined faster and more accurately inside the op.

The code to get the caller is cribbed from pp_caller() and should be in
its own subroutine.  The rest was cribbed from pp_die()
Move the autodie exception code into its own function.

This is a very simple extraction.

For #9
Turns out we can get the function name from PL_op.

This makes it easier to spam io_error() all over the place without
worrying about typoing the function name like I already did once.

For #9
Fix an uninitialized value warning coming from Perl_io_error().

Was concatenating to an uninitialized SV.
Add a macro to get the number of arguments on the stack.

Will be very useful for determining failure for the IO functions which
take multiple files to work on and return the number successfully
dealt with.  NUMARGS - retval will be 0 on success.
Move getting the arguments into its own function.