Introduce dtype.vector, matrix convenience creator functions and use them

This even improves performance because it work-arounds Cython shortcoming where
the GIL would be acquired and then released needlessly if a function contains
the nogil block.