Rewrite to duotype (#9)

Implementation of #9 by changing the definition of the specification related mappings to use the new datatype

    data DuoMap f
         = DuoMap
         { enumMap :: f EnumValue
         , funcMap :: f FuncValue
         }

This makes it possible to define the mappings in separate modules from the original values.