########## TODO

##  Add doctests - currently not working easily with outputs

########## Potential speed improvements

##  Add issymmetric && Symmetric to speed up certain cases in ScatteredInterpolation - done?

##  Options to solve ScatteredInterpolation linear eq system on gpu.

##  Use iterative solver on cpu with a larger tolerance. Test if keeping 
    the optimum settings from the previous iteration and using them as a seed
    improve convergence speed for the iterative solver. 

##  Possibility to save entire optimization state in an easy manner. 

##  Try optimizing widths by optimizing a subset before optimizing the entire range. Multigrid approach

##  Implement RBFs with sparse support to increase speed of solving linear eq. system.

##  Optimize hyperparameters with another solver, e.g. LBFGS + random start, requires
    re-thinking variable kernels.   

########## Wishlist

##  Call and continue optimisation with the results type.

##  Documentation of in-place options updating

##  Add option to use Generalized RBF Interpolant. Needs updates to types

##  Add option to use a cheap interpolant to speed up the iterations, e.g. IDW

##  Fast method where relearning only happens every few iterations use global results for all following iters, @spawn?

##  Parallel function evaluation? @spawn

##  Run hyper optimisation in smaller batches, for example by clustering with overlap, e.g. @spawn each batch eg (A Gentle Introduction to Dropout for Regularizing Deep Neural Networks)