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?