Timeouts: use double-eval safeguard

Prevent unlikely but possible bug where the code you're timing out
could die *just* before the timeout happend, escaping the eval,
causing the SIGALRM to occurr and thus call `die` before the alarm is
cleared.

See:
http://search.cpan.org/~lbaxter/Sys-SigAction/lib/Sys/SigAction.pm#Note_on_%22Double_evals%22
and:
http://search.cpan.org/dist/DBI/DBI.pm#Signal_Handling_and_Canceling_Operations