CLN: Standardize values coercion during Block initialization 
Splitting off from https://github.com/pandas-dev/pandas/pull/19268 (which is starting to give me unicorns fairly often)

After that, all blocks eventually end up calling `Block.__init__` (aside from `ScalarBlock`, which we'll ignore).

Most of the subclasses init methods are

1. maybe coerce values to the expected dtype
2. `call super().__init__`

It'd be nice to put 1 into favor of a `_maybe_coerce_values` method defined by each block, and remove all the subclasses init methods.

The one sticking point will be `DatetimeTZBlock.__init__`, which accepts a `dtype` parameter that no other block does.

https://github.com/pandas-dev/pandas/blob/35812eaaecebeeee0ddf07dee4b583c4eea07785/pandas/core/internals.py#L2582-L2590

We could *maybe* push that onto the callers, and then clean things up.