Split the TrieMap module into a generic and core specific part.
Split the module into two parts.
Motivation: I came across a situation where I would have liked to make LabelMap a instance of TrieMap. However this would create a transitive dependency on CoreSyn for essentially all Cmm related Modules which seemed excessive.
Splitting TrieMap into a general and Core specific part changes this. It also leads to a nicer separation of concerns.
I have implemented a first version of this in D4618.