Add if-letk and when-letk variants

Mostly based on the canonical Clojure implementation of if-let and when-let with a few small changes and a side order of tests.
Can this just expand into `if-letk`?