Improved the way ConstantIPOperators are converted into NonConstantIPOperators for AdaptiveStep integrators so that Richardson extrapolation can use the same technique.

git-svn-id: svn+ssh://svn.code.sf.net/p/xmds/code/trunk/xpdeint@2886 41b19578-b77a-4e3b-9682-c8570d237623
Optimise NonConstantIPOperator to not recompute IP operators when the last time step is the same as the new one.

Not all propagation step fractions need to be kept in memory at once, and currently the NonConstantIPOperator is optimised to reduce this memory usage.  However, now that we can re-use past results, it will probably be worthwhile using the extra memory to save recomputing them.

As an example, the ARK45 integrator has 5 propagation step fractions, however only 2 of them are needed simultaneously, so only enough memory is allocated for 2 of them.  If we allocate memory for all 5 (and use all 5) we should see a performance improvement on adaptive integrators with IP operators.

git-svn-id: svn+ssh://svn.code.sf.net/p/xmds/code/trunk/xpdeint@2887 41b19578-b77a-4e3b-9682-c8570d237623
All IP operators for adaptive integrators are now much faster, but use more memory.

In particular, this is likely to significantly speed up 1D simulations.  It will have a similar impact on 2D simulations that haven't separated their IP operators for each dimension, but a much smaller impact on those that have.

The extra memory requirements are unlikely to be an issue in 1D, and in higher dimensions it will only be an issue if you don't use separate IP operators for separate dimensions (which you should, because it's faster).

git-svn-id: svn+ssh://svn.code.sf.net/p/xmds/code/trunk/xpdeint@2888 41b19578-b77a-4e3b-9682-c8570d237623