CharacteristicTimeSet didn't return on success-path and threw exception
anyway.
ValueRange::absolute() should use values between lowest() and max()
instead of min() and max(), as min() returns the smallest positive
normalized number for floating points.
WriteLockFreeRead can now also wait until the result was actually, so
the writer-party can do cleanup.
Introduces FrameSetTraits, so that we're more flexible with the way the
frame sets are actually organised, without having to use virtual methods
for each sample access.