[PCMCIA] Don't cache CIS bytes found to be invalid.
Several PCMCIA cards I have here do not work correctly over a
suspend/resume cycle; the PCMCIA code believes that the card has
been changed in the slot, and therefore performs a remove/insert
cycle.
This seems to be because the card returns more or less random data
when reading memory space, leading to the CIS cache mismatching
the card data. This in turn is caused because we try to read CIS
data from both the attribute and memory spaces, and we add the result
to the CIS cache whether or not the returned data was valid.
We therefore convert the CIS cache to use a linked list, and provide
a way to remove cached data from that list. We also replace the
"s->cis_used=0;" construct with a function "destroy_cis_cache(s)"
which clearly describes what we're doing.