Minor typo fixes in cache module documentation
Modify set_rand_insert to copy cache and return modified

Before, the set_rand_insert function of the cache module modified a
caching policy passed as argument to make it perform random item
insertion without returning anything. With this modification, the
instance passed as argument is not modified. The modified cache
instance is returned by the function.

This commit also renames the function to rand_insert_cache
Add key-value cache implementation

All cache policies implemented by Icarus only keep in cache an item's
key but not an associated value. Possible extensions of the simulator
may need cache replacement policies also storing item values.

This commit adds a function that, passed a key-only cache instance,
returns a corresponding key-value cache instance.