REFACTOR GP supports additional optimizers for ML estimation passed as callables

In addition to the 'fmin_cobyla', 'Welch', GaussianProcess allows now
to pass other optimizers directly as callables via the parameter optimizer.
REFACTOR Correlation models separate between __init__ and fit()

This allows to call __init__  of more complex correlation models outside
of the GP before the training data X used in fit() is known