remove empty let/rec
change `uncover` implement: iterate 'til converged
- fix uncover `Var` case: known function calls shall not be free
  if there are closures
- the closure of (mutual) recursive functions are captured if needed
- `hasClosure` and reversed usage link are factored out
change AST printing style