[MRG] Gaussian process for arbitrary-dimensional output spaces

I have fixed the Gaussian Process submodule so that Gaussian Processes can be trained on data which is vector like in y. Now when training a GP each point in both X and Y can be of arbitrary dimension. Previously, the values of Y were required to be scalars, which is a requirement which is not necessary for GPs.

The changes are fully backwards compatible, and the old tests work fine. ~~I have not written new tests to test the new functionality, but I can if it is necessary.~~