Implement LRU eviction for cache framework

LRU eviction is an essential feature for caching system. This patchset implements the feature based on rb_timer.

Each commit message explains technical details and can be merged and build without problem. The whole set is well-tested but still may not be ready for stable release.

An new cache2 option purge_lru is added and when used, the "expires" parameter of cache_set/update will be ignored. The cache store will be filled up and the least recent used item will be purged when adding new item.

Documentation will be updated once the patchset is merged.