Adds some Arbitrary instances
Adds dur parameter to HasEvents (consolidate with Transformable)
Flips order of HasEvents type args
Changed Transformable and HasEvents to be proper classes

This is a tricky one. Real classes are bad because it is a nuisance to define
all the instances. Pseudo-classes make the inferred type signatures unreadable.
For classes with very few instances, such as these real classes is probably best.