consistently use shape rather than dims when reshaping Qobjs
optimize state_number_enumerate for case with few excitations in a big hilbert space