Implement rubbishing of Roles and Users

Implement HTTP DELETE for '/roles' and '/users'.

Refactor 'DELETE.hs' to allow code reuse for the different DELETEs.

Implement a helper function, 'withParam', which looks up a parametre
with paramE and runs the passed in function on it.

Refactor test code for HTTP DELETEs and generalise 'rubbishP' into
'(=^=)', and add 'Entity's to the new 'HasRubbish' typeclass provided
from fc061360a72a1d260f2dff968d20fc0dd58d9477 (Claim free lenses for
fere) in tempuhs.

Add default 'Entity's for 'Role' and 'User' to avoid the boilerplate
from constructing them.

Rewrite the DELETE API to document the new HTTP DELETEs.

The tests now use Lens, so add a dependency on Lens.

Add 'MultiParamTypeClasses', 'FlexibleInstances', & 'FlexibleContexts'
to implement 'HasRubbish a (Maybe UTCTime)' instances. It is a
multiparametre typeclass, so we need 'MultiParamTypeClasses'. It uses
'Maybe UTCTime' as one of its parametres, so we need
'FlexibleInstances'. We need to use it as a context in some places, so
we need 'FlexibleContexts'.

Add '-fno-warn-orphans' to 'Entity.hs'. This is safe because the
typeclass is built with tempuhs, so the instances will never be
orphaned.

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