Allow rb_timers to use user provided memory for root and nodes

Sometimes we don't want rb_timers to malloc() root and nodes for us
when we are doing our own memory management or using mmap().

This patch adds two new functions taking pointers to root and node.
Their original counterparts just call them with pointers to root
and node from malloc().
Use rb_timer to handle cache expiration

Scanning all items to find out expired ones is not efficient when
there are thousands of items.

This patch uses rb_timer to store those items that will be expired.
Though we get O(logN) for deleting expired items, the insert, update
and delete will be O(logN) too rather than the original O(1).

Nevertheless, rb_timer makes evicting the LRU item possible when
the store is full, which is considered an essential feature for
all caching system.

Note: this patch introduces a behavior change. Before, when an item
is updated without "expires" parameter or with "expires=0", the
expiration will not be changed. This doesn't make sense -- unlike
cache_set(), there is no way for cache_update() to make items never
expired. Now the behavior of both functions are consistent, as what
the manual describes. For plugin developers, please use flag
UWSGI_CACHE_FLAG_FIXEXPIRE to disable expiration update when calling
uwsgi_cache_magic_set() or uwsgi_cache_set2().
Implement LRU eviction for cache framework

The LRU eviction doesn't support bitmap mode because purging LRU
item doesn't guarantee enough space available for new items.