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()