Cron makes empty argument arrays into array(array()), and then array(array(array())), and so on, upon rescheduling

Description

The way func_slice_args was used caused some issues. I've done away with it in the patch. Now all the cron functions that will pass along args to their corresponding hooks pass in an array of the args to pass to the callbacks run on the hook, as opposed to adding all those args to the end. I personally think its better this way, but it is API breakage for anyone who might've written a plugin using cron so far (only me probably =D ).