Refactor Spec and QueueRunner [#62585700]

 - QueueRunner now responsible for timing out async specs instead of
   Spec
 - Make sure only spec functions are timeoutable and not suites (due to
   the refactor)
Don't allow calling the same done callback multiple times

[finishes #62585700][fixes #523]