Improve DateTime comparisons

Right, Allen’s Interval Algebra seems to be the way to go for comparisons as it’s much more nuanced than :eq, :lt, and :gt. I think it could be added into the stdlib but there’s limited usefulness for Date, DateTime, and Time structs. When calculating Allen’s relation for the structs of the same type, the vast majority of time it’s only possible to get 5 out of 13 available relations (precedes, is preceded by, meets, is met by, and is equal). We could get remaining ones when we compare *Time structs with different microsecond precisions (which doesn’t seem all that useful) or different structs, e.g. DateTime against Date. Allen’s relations would totally make sense for the built-in Date.Range.

Worth mentioning that with the compare/2 functions we can today do:

iex(1)> Date.compare(~N[2021-01-01 09:00:00], ~D[2021-01-01])
:eq