Change How Output Message and Failure Get Tracked

With the old code, any check which had `mark_failure` called would keep that boolean forever until the server was restarted, even after the failure was corrected. This is obviously bad. Now, a new outer Check#run method clears the old entries and then calls #check which sets the message and error attributes, which are checked directly rather than implicitly as the return string of #call.

Another alternative we considered was to stop registering an instance of Check which is kept at application start, but to capture the signature (class and any optional arguments) which would be used to instantiate a new set of Check objects with each request (e.g., `OKComputer::ResqueBackedUpCheck, "critical", 100` instead of `OKComputer::ResqueBackedUpCheck.new("critical", 100)`). We were reluctant to change the outer API just for this bug.

This solves #14 and #15.