incremental extension of fireball timer

while commands are still being received by fireball, and the timer is about
to expire, extend it incrementally. The increments are started at 1% of the
original duration and capped at the original duration.

This will be useful for long running async tasks as the poll will extend the timer.