Tried to implement a generic Matrix class. It hasn't worked out. Saving this here for posterity whilst I change back to a non-generic version
Diving down the floating point comparison rabbit hole