rewrite checks with new info object

Makes it easier to record score and messages
add support for sync checks

checks with 2 arguments `json` and `info` are synchronous
checks with 3rd argument `fn` are asynchronous

we wrap them in proper appropriate tasks before adding to queue