b* binder for decomposing a cons into its car and cdr.
Usage:
(b* (((cons a b) (binding-form))) (result-form))
is equivalent to
(let* ((tmp (binding-form)) (a (car tmp)) (b (cdr tmp))) (result-form))
Each of the arguments to the cons binder may be a recursive binder, and cons may be nested inside other bindings.