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
add explicit require of clojure.walk
ndarray cleanup

NDArrayDouble's code removed, "magic" is now in ndarray-magic
remove all non-magic definitions from ndarray.clj
more cleanup