add primitive double array variation of NDArray
optimize matrix multiplication for NDArrayDouble

this version is ~10x faster than NDArray and ~7x slower than vectorz
more optimization

now on par with vectorz, ~15% difference
optimize matrix multiplication even further

now almost 2x faster than vectorz on n=500
throw in a few macroses to generate type-specific code