Motivation
=
A runtime error would occur if the max thread count wasn't equal to the number
of tasks given to cascadence. This error makes the code very brittle, thus must die.

Side-Effects
=
* Maybe_spin_up_thread now gets called a lot more times when the max thread
  count is reached due to the fact sleep 0.5 has been moved to spin_up_task.
* There is no longer an explicit test that states that the runner needs to
  perform task#call

Changes
=
* moved sleep 0.5 from maybe_spin_up_thread to spin_up_task
* explicitly wrote out return threads to make sure _spin_up_task returns
  its payload of running threads regardless if it spins up anything or not
* changed the spec task count to some number larger than the default
  max thread count of 5
* Changed from using mocks to using a dynamic class for tasks in that now
  simulates work done with sleep and tells me when the thread exits