Add time management

**Add time management:**
When a new {Key, Value} pair is stored, it adds an expiration time to it, so it is stored as {Key, Value, Expires}.

**Change list/0 function implementation:**
Now `cache:list/0` function is a synchronous call.

**Add two Internal functions:**
- `cache:timestamp/0` that returns the current time in seconds (used for the cache expiration time).
- `cache:clean_cache/0` that uses a new asynchronous handler created for removing expirated elements from the cache.