Adds the ability to log an error and raise an error at the same time.
Updated the base model code to use the error logger feature.
Stopping criteria used for ending training.
Added logging detailing from which set the values come from (train, valid, test)
Split logger and optimization facility to another project.
Corrected docs and imports for SMARTlogger

To reflect the refactoring of the logging facility.
Updated documentation and logger logic.
First draft of a SA trainer