Mysql: kill query on timeout

We have an SQL timeout, but it wasn't actually killing the query when
it times out. This is problem when issuing the FLUSH TABLES command
because it occasionally locks up the database if there is a
long-running write query.

Now, we kill the query when the timeout hits which also kills it upon
CTRL-C'ing

See here for the problem (fixes #23):
https://github.com/alestic/ec2-consistent-snapshot/issues/23

Got the idea for the fix from here:
http://www.perlmonks.org/?node_id=885620

I've tested the following:

1. Call: sql_timeout_retry("SELECT SLEEP(60);", 0.5, 10, 5); after
   connecting.
2. Check the processlist while this is happening:
   Before: We see the query in the list all the time because the
           timeout *doesn't* stop the query
   After:  query is rarely seen in the list cause it times out and is
           killed after 0.5s
3. Interrupt the process (Ctrl-C) while it's happening
   Before: Query is still in the processlist until it finishes
   After: Query is killed when the process is killed.
I'm concerned about the fact that there's only one eval wrapping above. I know that's the way the script was written, but it seems to be typical to do two, one to catch the "real" alarm, and one to catch the alarm if the code in the first dies and then the alarm is triggered before the `ualarm` on 531 (new style) runs. As I understand, that's extremely unlikely, but is possible. See http://search.cpan.org/~lbaxter/Sys-SigAction/lib/Sys/SigAction.pm#Note_on_%22Double_evals%22 and note the code in the second example under [here](http://search.cpan.org/~lbaxter/Sys-SigAction/lib/Sys/SigAction.pm#SYNOPSYS).