Implement integer matrix multiplication and integer matrix-vector multiplication
Unfortunately no BLAS supports accelerated matrix multiplication.

`Int32` can be safely converted to `float64` (only issue is if the product goes into the `int64` range)

`int64` may incur loss of precision for numbers bigger than `int32`

==> Implement a fallback method for `int`
==> Display a `static` warning at compile-time to the users to tell the users to convert to `float` if numbers are small enough