Change drop_value to be tail-recursive.

drop_value in lists_and_patterns seems, for no reason, to not be
tail recursive. I found that confusing. If there is a good reason,
should it not be discussed a bit in the book?