Task Health Checks

**Do not merge:** _Currently for review only_

Addresses #174.

Certainly it doesn't 'need' to be a case class. Hardly anything ever needs to be anything else. Software is maleable.

However, the reasons I typically use 'case class' by default (where possible) are:
a) the cost is negligible.
b) I like having the things it brings in for free (not the least of which: `apply()`).