Revamp the way checking steps are run

Instead of a huge ugly function, create a make-like dependency tree,
whereby dependent steps can either succeed and return info, or fail.
Along the way, the steps can register warnings or errors freely.
Get rid of flycheck-package--pass-not-yet-run

Since we store cons cells in this hash table, we can't ever confuse
gethash returning value nil and gethash not finding a key, because
the former never happens.