TYP: enforce annotation on SingleBlockManager.__init__
cc @simonjayhawkins my impression from yesterday's threads was that mypy should be catching the wrong-type being passed in `SingleBlockManager.__init__`, did I misunderstand something?

Also (and I know ive asked before) is there a nice way to annotate the return type as "same type as self"?  I tried `pandas._typing.T` but that didnt do it.

Parts of this are repeated in several BlockManager methods, should probably be made into a helper function, pending discussion on above.
sorry @jbrockmendel didn't get round to this today. will look tomorrow. thanks