DEPR: deprecate exposing blocks in core.internals
Motivation: tried to clean up the blocks code bc DatetimeTZBlock and DatetimeLikeBlock are no longer really needed.  Found that we can't do that bc DatetimeTZBlock is exposed in the pseudo-public API.  That got me looking at `internals.__init__`, where comments suggest that we are importing the block subclasses for io.pytables (which no longer needs them) and io.packers (which no longer exists).  So we could remove them directly, but apparently a recent PR deprecated NumericBlock and ObjectBlock so this piggy-backs on that deprecation (and adds a missing test).

In internals.api I need to deprecate DatetimeTZBlock in order to eventually get rid of it entirely.  Also deprecating Block and ExtensionBlock is orthogonal just to wean downstream packages off of them.

cc @jorisvandenbossche 

xref https://github.com/pandas-dev/pandas/issues/40226
As mentioned in https://github.com/pandas-dev/pandas/issues/40226, pyarrow accesses DateimeTZBlock, but never instantiates it. So in theory that use case could easily be kept without a full working class. Now, the only reason we were using it was to pass it to `make_block`, and that's something we can easily remove in pyarrow, which I am doing in https://github.com/apache/arrow/pull/38321.  
So from pyarrow's point of view, this deprecation is fine.
 If there are no more comments, I plan to merge this in a week. > Can't comment on the exact line, but can you fix the stacklevel to 2 for this DeprecationWarning?

Updated. Can you confirm this is what you have in mind Yep, that's what I meant