During my recent pairing with @robrix, we agreed that the name of
Linker was inaccurate—it doesn't link anything, it just keeps track of
past modules. This renames it and its module.
The caching analysis had been disabled, as it was still written in the
open-interpreter style. This patch restores it, defining a
`CachingAnalysis` newtype that uses nondeterministic but convergent
caching in its `MonadAnalysis` instance. This also defines an
`embedSubterm` helper that is useful in defining new analysis passes.
Thanks to @robrix for 🍐!