Remove functional dependencies from Modifier

Remove the functional dependencies from the Modifier class at the
expense of requiring a little more type annotations. But this is
unlikely to happen in real applications, as the types are fixed in the
signature. The good thing about this is that it allows us to reduce the
usage of UndecidableInstances extension, which is a good thing.
Factor out combining of modifiers

Modifiers now don't have to combine (and shouldn't) itself with the
previous modifier. To still allow combining of modifiers, a new Modifier
'Combining' has been added that wraps a modifier such that it combines
itself with the previous modifier. Also, |<>| has been removed, as it is
the same as (<>).
Add enumSchedule function to Enum.hs

There exists enumValue and itemValue, so if there is itemSchedule, enumSchedule
should exist too.
Add Copy and Parallel modifiers

The parallel modifier is like the sequential modifier, with the
difference that all the modifiers will be applied to the same function
and won't be chained. The result of the individual applications is
combined with the monoid append operator.

The copy modifier copies an entry in the schedule from one location to
another one. It does not remove the the entry at the old location, nor
does it preserve the entry at the new location. Wrap it in Copy to do that.