Tests for task repetition parsing
Make english_constraints/2 into repetition//1

As the repetition rules get more complicated, I'll want to parse them
with a DCG for convenience.
Don't allow text after a day of the week
Improve test format for weekday test

This style makes positive and negative assertions have the same
structure.  This structure lends itself well to other tests.
Move "Unknown repetition" message

It's now part of template_applicable/2 instead of repetition//1.  That
leaves the latter as a pure DCG that just handles the repetition rule
parsing.
Factor out codes_dow/2

I'll want to reuse it soon.
Allow many days of the week as a repetition rule

This allows a task to repeat on "Monday or Thursday", for example.
Factor out "one of these days of the week"

This lets one use dow([saturday,sunday]) to constrain a datetime to
only those dates which fell on a Saturday or Sunday.  I had recreated
this same code in two separate clauses of repetition//1 and I'm sure
I'll use it again, so it seemed best to put it in library(julian) for
all to use.
Implement 'weekday' form
Implement nth(N,Form) rule

This is great for finding "third Tuesday" or "ninth weekday", etc.

This form is slower to calculate than I expected.  I suppose that's
because it has to find all solutions in a given month.  I can optimize
this later, if it becomes a bottleneck.