refactor out fresh name prefix extraction logic

1. refactor out FreshNameExtractor out of Quasiquotes cake into
   SymbolTable (can’t put it outside due to the fact that names are
   path-dependent)

2. add optional parameter to the fresh name creator to cover additional
   qq$ prefix needed for quasiquotes

3. add unit tests
use more specific cake dependencies
Merge pull request #3138 from densh/pr/fresh-name-extractor

Refactor out fresh name prefix extraction logic