adding support for LRU caches

This little commit adds

  1) a ~cache_size optional argument to the open_db function. if present, it is the size in Mb of the LRU cache
  2) a ~fill_cache optional argument to the Iterator.make function. default value is true, which means that iter will update the cache if there is one. 

UT's passed. It's a quick hack hopefully clean enough to be merged. Thanks!