Improve performance for __contains__
Improve performance for __contains__

The previous implementation would just
remove(), then add() the element.  Simple, easy
to understand, and unfortunately not very efficient.
The problem is that we're updating things that we don't
need to update (like the lookup table), and we're creating
a _Node object when the existing one would work just fine.
The performance is improved by handling the typical case where
we're not removing the head or tail element by just moving
the _Node object for the element to the end of the linked list.
This cut the total time for most of the __contains__ benchmarks
in scripts/benchmark in half.

jamesls/lruset,jamesls/lruset