Added nondeterministic `choose` and `fail`.

Based on Scheme implementation at p.293 of "On Lisp" by Paul Graham