Added firstOk and rewrote oneOk and allOk

This pull request introduces the "firstOk" method. firstOk behaves like oneOk except that it will *yield* the first key/value pair that is truthy according to the provided callback.

I also rewrote oneOk and allOk so that they use firstOk, removing some code duplication