Reorganise Spectrum1D

Transferring code from multispec-linear-fits. This PR contains new design for the Spectrum1D class to directly support reading and writing, and well as new classes to better organise the code