fix exists() return value for cached keys

There were some little misbehaviours for base->exists return values of cached keys.
it was returning the key value instead of the cache detail array with timestamp and TTL.
Nash Born spotted this https://groups.google.com/forum/#!topic/f3-framework/ZkOLyjtuSMA

Furthermore cache->exists has still populated the $val reference, for the first time after the key was expired. fixed in this commit, and added some unit tests. (notice: maybe you need to clear for cache folder first to make them work properly) it's working at http://f3.ikkez.de/cache