Cleaning
Rewrote a lot of _duration as (^.duration)

I have resisted this change because the lens version requires
Transformable as well as HasDuration. In practice no types should
have a duration without being transformable, so it is not a problem.

I preferred to add some extra function contraints, rather than
makeing Transformable a superclass of HasDuration (this might
happen eventually before 2.0).
Added extra constraint, see previous commit