Better computes on Workflow start_date and end_date

Bounds checking for day in month; ensuring that month chosen to represent quarterly cycle has 31 days; graceful handling of null/undefined start/end dates.