Eigen: Additional Eigen utility functions needed for the new models. Also added a test which checks correctness of all utility functions.
Model Hierarchy Setup: Addition of the following Abstract classes - BaseModel, BaseTFModel, BaseForecastModel. All models must inherit BaseModel. BaseTFModel provides ready to use APIs for importing and running the Tensorflow API and can be used across model types(meant for forecasting or otherwise) if Tensorflow functionality is needed. BaseForecastModel is meant only for Forecasting(like the current workload forecasting models).
Model Additions: Added Linear Regression and Kernel Regression model.
Model Utilitiles: Set of utility functions which can be used by models or other classes using those models. Added tests for checking each function.
Setting things up for Ensembling - Add Fit/Predict as BaseModel pure virtual methods, clean up the LSTM Train/Validate Epoch.
Coverage increased (+0.1%) to 76.492% when pulling 98ae7b17d4d1b44fd42e76806daac54946f70aa9 on saatviks:saatviks_forecastmodels into 2406b763b91d9cee2a5d9f4dee01c761b476cef6 on cmu-db:master.
This PR adds the following changes: