Return the difference between two PlainDate values using the provided unit.
Returns null for invalid inputs (negative diffs are valid).
Uses Temporal.PlainDate.until and extracts the requested unit.
Accepts GMT calendar-annotated PlainDate strings (as produced by convertDateToCalendar) — E5 (issue #78). When both date1 and date2 carry the same calendar tag, the difference is measured in that calendar (a Hebrew leap year is P12M12D, not P1Y, in month/day units — see the roadmap’s E5 decisions of record, D5). When they carry different tags (or either is a bare, untagged ISO string), the difference falls back to measuring in Gregorian. smallestUnit, roundingIncrement, and roundingMode control optional rounding of the result, per Temporal’s DifferenceOptions — e.g. { smallestUnit: "week", roundingMode: "halfExpand" } rounds the difference to the nearest week before extracting the requested unit.
When unitArg is an array, smallestUnit must not be coarser than the largest unit in the array (e.g. ["month", "day"] with smallestUnit: "year") — this combination is rejected by Temporal and returns null, same as other invalid input.