Neon instructions support (ARM SIMD)
Currently the custom BLAS uses a scalar fallback for ARM.
We should use the Neon instructions (ARM vectorized SIMD) instead.

Note that we only use the custom BLAS as a fallback for integer matrix multiplication at the moment so usual computations involving float32, floaat64 or complex are still accelerated by the installed BLAS (i.e. OpenBLAS).

Caveat: there might not be any vectorized integer SIMD in Neon.


Outline:
- Add a CPU info file to check supported Neon intrinsics similar to cpuinfo_x86: https://github.com/mratsim/Arraymancer/blob/fd26e16f/src/laser/cpuinfo_x86.nim
- Add a neon SIMD file similar to x86 simd (which should be renamed): https://github.com/mratsim/Arraymancer/blob/fd26e16f/src/laser/simd.nim
- Create new ARM config in gemm_tiling, see comments on how to figure out how to best use all registers: https://github.com/mratsim/Arraymancer/blob/fd26e16ff0d1d623c749c57a2e3df6fd9d2a431c/src/laser/primitives/matrix_multiplication/gemm_tiling.nim#L74-L197
- Instantiate ARM generators: example for AVX - https://github.com/mratsim/Arraymancer/blob/fd26e16ff0d1d623c749c57a2e3df6fd9d2a431c/src/laser/primitives/matrix_multiplication/gemm_ukernel_avx.nim#L10-L44
- Update the dispatchers:
  - https://github.com/mratsim/Arraymancer/blob/0f4a726c461215a4ca3f53c52572c5357e5593cf/src/laser/primitives/matrix_multiplication/gemm_ukernel_dispatch.nim#L6-L20
  - https://github.com/mratsim/Arraymancer/blob/0f4a726c461215a4ca3f53c52572c5357e5593cf/src/laser/primitives/matrix_multiplication/gemm.nim#L229-L248