Added useIf, usePromiseIf helpers.

Was able to pull predicate checking out of individual middleware functions
and into the use call on the router.