Bug fix, great speed up, and a new function traj to compute and return trajectory

1. A bug was fixed: The governing equation for the slow variable was wrong. Where the  sum of the related fast variable was to have been used, only the slow variable value was used.

2. model.py has been made much faster. This is by trying to consider just views of arrays without making copies as much as possible. There are other changes to make it faster that are not obvious. These involved trial and error.

3. The slowest part is now np.repeat. Could think of ways to speed this up. But none that I have tried can speed this.

4. Function 'traj' to return equi-spaced trajectory. 'integrate' only returns end point
Routines to compute improvements to GP with additional data point

Logic: One point is held out. Then there is a test point. GPs are tuned once without the test point and then a second time with the testpoint. After each tuning, the value of the learnt map at the held out point is computed. The difference in error between 'GP without test point' and 'GP with test point' is the improvement due to the test point.

1. improv_p2h considers 1 map from prms to high res pca.
2. improv_p2l2h considers 2 maps: 1 from prms to low and another from low to high
3. improv_p2l2h_lo is improvement due to adding a low resoution test point
4. improv_p2l2h_hi is improvement due to adding a high resoution test point
5. In either improv_p2l2h_lo/hi, the held out point is a high resolution point.

Main restriction: Only considering first pca components in both low and high.
Need to remove this restriction to allow arbitrary numbers of pcas for low first and then also for high
New functions sample2, like_pair, like_pair_1map, and unlike_pair.

1. One of the issues is that the argument to Pool.map has to be picklable.
1a. So, put funtions like_pair, like_pair_1map, and unlike_pair in gpsm.py
1b. Noting that gpsm.py does not import the multiprocessing module.
1c. If these functions were in improv_p2l2h.py Python throws errors about not being able to picle functions

2. Put sample2 here so that I do not have to use sampler.py module

3. Modified GPsubmodel in gp_model to have a specified variance rather than have that be a random variable. With this modification, iterations argument to sample actually reflects the number of iterations (unlike if the variance was a random variable when the number of iterations kept changing and I was not able to see the connection between specified iterations and the actual number of iterations specified.

4. I can see possible advantages to having observation variance be a random varialbe if it were to be tuned as well. But the question is as to whether this is tuned by the sampling procedure???
setting PCA.n_components to 1 for now and other parameter changes and simplifications

1. K is now an argument to model.integrate
2. mesh_low.integrate simply calls model.integrate with the additional K argument
Changes similar to those in mesh_low.py

1. integrate simply calls model.integrate with the addition K argument
2. PCA.n_components set to 1 for initial developement of improvement characterization with cross-validation