Add pipeline date mixin

@danhodge, @mattgillooly, please review.
/cc @dstuebe 

Context:
Our S3DistCp selectors often exceeds the datapipeline definition limit for long duration runs since we have a giant OR expression that spells out every day. This pull will attempt to greedily glob intermediate days into years and months if possible (without selecting any additional data). This should results in on order of 60 days + 24 months + n years for durations of n years (much slower than 365 * n).

Also pulling @dstuebe's PipelineDate class (w/ some modifications) in here as this is more datapipeline specific rather than pipely. https://github.com/swipely/partly/pull/6