Extract calc logic to _parse_duration, returns value plus cacheable flag

Signed-off-by: Pedro Melo <melo@simplicidade.org>
Added 'midnight' expression

Signed-off-by: Pedro Melo <melo@simplicidade.org>
v0.004

        * Added the 'midnight' expression