getCacheValue seems wrong
`toast myheader.h` is cached using getCacheValue(myheader.h) which seems wrong as it doesnt' track myheader.h's dependencies; 

this is related to https://github.com/genotrance/nimterop/issues/29 and https://github.com/nim-lang/RFCs/issues/510 but different I think, in the sense that even if https://github.com/nim-lang/RFCs/issues/510 is fixed, the current code won't work since getCacheValue will return a "incomplete" hash that will bypass a call to  `gorgeEx(cmd, cache=getCacheValue(fullpath))` in `getToast`

## proposal
we can achive both accuracy (recompile when needed) and speed (no overhead for that check) as follows:

replace `(result, ret) = gorgeEx(cmd, cache=getCacheValue(fullpath))` with:

```nim
let hash = getHash(cmd, fullpath)
let indexFile = getTempDir/"nimterop"/("index." &  hash & ".json")
var workNeeded = false
if not exists indexFile:
  let deps = getDeps(fullpath) #  via `clang -M` (a proc required to implement https://github.com/nim-lang/RFCs/issues/510)
  # decide whether to strip system deps (via https://github.com/nim-lang/RFCs/issues/510)
  # also same lastModificationTimes for each deps
  indexFile.writeFile %* (deps: deps, cmd: cmd, file: fullpath)
  workNeeded = true
else:
  workNeeded = anyDepsIsNewer(indexFile.lastModificationTime) # that's the overhead; seems fast enough
  if workNeeded: updateIndex(indexFile)
if workNeeded:
  (result, ret) = gorgeEx(cmd)
```

Alternatively we can use 1 single db file (eg sql / mongdob) instead of json files
