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 don't think the 'oldform' thing is necessary, in clojure.core it's there to give nice error messages for a really old syntax: 
https://github.com/clojure/clojure/commit/250c99e43c43a63542b2791d7329087cc26504ea