Use floats instead of doubles in the QR solver and Matrix class
The QR decomposition and the Matrix class where the data are stored have been changed to use floats instead of doubles with the aim to improve performance. Only the minimal changes needed to achieve this have been made to the code.