I did some quick-and-dirty profiling, and these functions made up ~2% of the flamegraph, mostly for when they called through to the type parser; also, it's likely that they'll be called repeatedly with many of the same inputs. Memoizing the functions cuts them to ~1% of the flamegraph.
These changes enable templates to use the logging functions even if they're not installed in the same `node_modules` directory as JSDoc.
Includes API changes to various modules and functions that didn't have access to the dependency object. Most notably, you now call a function to retrieve tag definitions, rather than just using an exported object as-is.