Claim free lenses for free

Use lens to get typeclasses & 'Lens'es for each field of 'Timespan',
'User' & 'Role'.

This adds a dependency on Lens (duh).

The FunctionalDependencies pragma is needed to constrain typeclass
parametres, so one of the parametres in a multiparametre class may be
determined from the others. Lens needs this since we have some
multiparametre typeclasses going on in here.

Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
Signed-off-by: Stian Ellingsen <stian@plaimi.net>
Reviewed-by: Stian Ellingsen <stian@plaimi.net>