REF/ENH: Constructors for DatetimeArray/TimedeltaArray
Big push on the constructors for DatetimeArray/TimedeltaArray, some progress de-duplicating code from their Index counterparts.

As discussed elsewhere, adds `dtype` to `PeriodArray.__init__`

@TomAugspurger can you confirm that the `_from_sequence`s implemented here handle the right cases?  It wasn't obvious if object-dtyped array/indexes were supposed to be handled there, but combining those cases was too clean to overlook.

Small fix in DatetimeArray comparison methods, just enough to make the tests work.  A separate PR forthcoming PR will do a more thorough fix/improvements of those.

One non-obvious point on which input would be especially welcome is how/when to use the `copy` kwarg in such a way as to copy at-most-once.  (related: deep_copy_if_needed and #21907)

#23491 found during this process, will be addressed in a follow-up.