Need to make sure we always end up with a Cell, even if it's null.

Fixes #4544.
use the correct d option in getopt instead of the removed f
update travis config
Start the task timeout checking *after* adding it to the execution queue.

This prevents missing very short timeouts which fire before the calling thread had the chance to add the task to the queue and are therefore ignored. This is mostly of importance for testing where we explicitly want tasks to timeout and set it to a very low value.