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.
I think that it also has another benefit for the user when they write:
```Clojure
(letk [[foo] bar]
  :a
  :b1
  :b2)
```
but mean:
```Clojure
(letk [[foo] bar]
  :a
  (do :b1
        :b2)
```
I admit that this wouldn't happen often, and probably only if the person were *very* tired or completely new to Clojure, but having the assertion can prevent this mistake from ever happening and maybe save someone some frustration.

I'm happy to take it out, but I think it's worth considering keeping in. Let me know what you think.