Fixed bug to allow rules to generate null.  This was initially not allowed and treated as a signal to backtrack.
A slightly smarter clone function.  This can avoid copying non-recursive immutable data.