Fix and improve the dequeue method of the FX module
The first improvement is to stop using setTimeout to perform the delay. It is
now performed in a manner similar to the start method. This should be a lot
more reliable than using setTimeout and allow some nice goodies like
being able to pause it or affect its duration using the speed method.
The second improvement is to have the delay method add an empty situation
(with its duration set to the duration of the delay) to the queue. This change
allows dequeue not to have to treat delay added to the queue as something
special, now its just a situation.