EnumMapMap

Based on containers 5.0, EnumMapMap provides an EnumMap, similar to IntMap but
accepting any Enum type. It also provides an EnumMap of EnumMaps type. The Key
is built using an infix operator (:&) and a base type, K. A typical use might
look like this:

The code ensures that only the root EnumMap can be empty. There are lazy and
strict variants. Both are strict in the keys, but the strict version is strict
on values as well. The data structures are the same however the key types are
different for the strict and lazy versions so strict operations can be performed
on a lazy EnumMapMap.