Denoted dimension array: numpy.ndarray subclass to keep track of dimensions as arrays are sliced and diced