Remove the circular dependency between Core/Language and Core/Template
The old work-around for this issue was no longer working well since the
migration to TypeScript. This commit untangles both modules, by each splitting
them into a low level and a high level interface.
The largest change is that language items are compiled when add()ing them to
the language store instead of when get()ting the contents.
This might slightly reduce the initialization performance on pages with a large
number of unused language items and it also might increase memory usage, due to
needing to store functions instead of strings.
It however improves the readability of the code and of course it also fixes
this breakage introduced by TypeScript. If it turns out that the change
actually *is* an issue then the logic can be optimized, e.g. by skipping the
template compiler if no `{` can be found within the phrase that is being
add()ed to the language store.