Date Time

These functions take a datatype, an operand, and a test, and return a composed function.

The datatype defaults to "DateTime". The operand and test arguments are Operation objects, which may be nested to any depth, but must evaluate to PlainDateTime objects.

The function returned takes an optional argument, which can be used as either operand, the test, or both by means of the FromArgument injector.

When the function is called, it returns the operand (evaluated) as a Right if the operand is after or before the test value, respectively. If it is not, or if an error is raised, then it returns a Left<Error>.

TODO: DateTime can be a String, a PlainDateTime, or a ZonedDateTime.