Add QM.applyIf, QM.applyUnless and QM.applyOnce

- removed QM.when and QM.once
Improve failure message for toBeFunction matcher