Trying to Improve Performance

By writing my own cache implementation.

The blocking cache is quite simple at the moment, we have a max cache
value and once we start getting near the limit we will look to start
removing items from the cache based on the cache items usage and last
usage.

One majoy different to the use of the MS MemoryCache is that we invoke
the item removed callback before we remove the item from the cache. So
we have a chance to persist it before its removed.

If this works out we will try and improve the cache so it can be limited
to memory size intsead of item count.

We still need to look at improving the diskcache as this is the part of
the system which really kills performance.
Testing Changes

Testing the BlockingCache and Moved into a new namespace
Wrapped up the MS Memory cache behind an interface, so we can easily swap in and out Inmemory cache implemetations for pref testing.

Tested the Blocking cache, its fast. the the cache management code just doesn't work! Need to fix this.

Included C5 collections which implements a lot more collections we can play with.
comments changed