Spec.hs: Improve timespan POST code

Make a set of specified optionals, and pass it around. When an optional
is in the set, it means that the specified value in the set should be
used. When an optional is not present, a fallback value is used. The
fallback rules are, still, laid out in 'firstTimespanEntity'.

This patch introduces a dependency on containers for 'Data.Set'.

This patch uses the RecordWildCards extension to avoid repetitive record
syntax.

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