LRUCache optimisation

This improves LRUCache performance pretty substantially (particularly for the multithreaded case) while keeping the same basic algorithm as it had before. I'm afraid the bulk of the work is in a single commit, because the rather wandering path I took to get to this point didn't make sense as individual commits. I have however added a lot of documentation to the private members which hopefully does a pretty decent job of explaining what's going on - so it probably makes more sense just to read the final result rather than look at the diffs.
It's a single byte :

http://www.threadingbuildingblocks.org/docs/help/reference/synchronization/mutexes/mutex_concept.htm

I did consider using the pool of mutexes trick, but I was also experimenting with different ideas for lowering the granularity of locking for the list operations, which required a mutex per entry. I'd like to keep that possibility for now, but we could consider a pool of mutexes as this stuff settles down (I expect we'll visit this again before we lock things down for final).