Gaussian Process extension: multiple hyperparameters

Hello.

I made some simple changes to the gaussian process module. Previously, the hyperparameters theta (parameters to optimize from the kernel function) were limited to one, though that one hyperparam could be multifeatured. This is no good if you want to combine kernels (like in Rasmussen & Williams' book) because each part of the new kernel will have its own hyperparams, so I modified the code to allow this.

Theta can now be a matrix, where columns are features / dimensions (just as before), but rows now correspond to different hyperparameters.

I also added a test for it and added a check in the built-in correlation functions to make sure they aren't taking in bad parameters. All the tests seemed to pass for me.

P.S. I hope I'm following the right procedure, I've never contributed before so please let me know if I'm missing anything.