Choice Trees: Representing Nondeterministic, Recursive, and Impure Programs in Coq