Added comment to initializer

Seemed good to explain why we do not set a default task in the
initializer: essentially this is because a task may be set later. In
particular method-based tasks would be ignored in favor of the default
task.
Prefer let! instead of subject.inspect
redefine ready_to_work?

Rather than an explosive, side-effect-ish ready_to_work? method, replace
it with a guard method (#ensure_ready_to_work!) which explodes unless

Also added tests for #ready_to_work?