Implement UserAttributes & refactor attribute code

Implement support for 'UserAttribute's, added in tempuhs by commit:
  Implement UserAttribute (like TimespanAttribute)
  (b943db1f677036bad1739401f4d3323aae94d767)

This includes GET, POST, PUT, DELETE and PATCH of 'UserAttribute's. They
all behave similar to their equivalent requests for
'TimespanAttribute's.

The code for 'UserAttribute's thus relies heavily on generalising and
reusing 'TimespanAttribute' code. This means that code has been all but
completely rewritten. Some minor cleanup takes place in the 'Timespan'
and 'User' modules as well.

The new Attributes code is now in the 'Attributes.Mono' &
'Attributes.Poly' modules. Some code from 'Timespan.Util' was placed in
the 'Database' module as part of generalising 'Timespan' and
'TimespanAttribute' code.

persistent-* dependencies are bumped to 2.1 for the polymorphic
'Attributes' functions to work.

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