Rename 'save' to 'write' and 'load' to 'read'
Make ml_minmax and ml_peak inherit from ml_base
Add ability to read / write model as well as training data. Closes #78

Works like this:
- If an extension is provided to read or write, the type of operation is derived from the extension. If the extension is ".model" then only the model will be read / written; if the extension is ".data" then only the dataset will be read / written
- If no extension is provided then an attempt will be made to either read / write both the model and dataset. In the case of writing, the extensions ".data" and ".model" will be added automatically as appropriate