PERF: do ndim validation before Block.__init__
Updated with exception message, docstring, annotations anything else here?  several perf-improving follow-ups as we get validation out of the constructors