Clean up my solution to waf's dislike of spaces.

Previously *everything* was quoted, and that made reading compile line (xmds2 -v output) annoying.  Now, only things that need quotes are quoted.

git-svn-id: svn+ssh://svn.code.sf.net/p/xmds/code/trunk/xpdeint@2875 41b19578-b77a-4e3b-9682-c8570d237623
Optimised IP operators for adaptive integrators with two or more dimensions by ~30%.  Users need to change their code to take advantage of this speedup.

Frequently, IP operators are separable e.g. L = -0.5*(kx*kx + ky*ky); In this case, e^{L(kx,ky) * dt} can be computed via e^{Lx(kx)*dt} * e^{Ly(ky)*dt}, and this is much faster than computing the exponential at each grid point as only 2N exponentials are required instead of N^2.

This optimisation is more important for adaptive integrators than fixed-step integrators with constant IP operators as the complex exponentials are precomputed before the integration.

To take advantage of this, change your IP operator definition from:
<operator kind="ip" constant="yes">
  <operator_names> T </operator_names>
  <![CDATA[
    T = -i * 0.5 * (kx * kx + ky * ky);
  ]]>
</operator>

<![CDATA[
  dpsi_dt = T[psi] /* plus stuff */;
]]>

to:
<operator kind="ip" constant="yes" dimensions="x">
  <operator_names> Tx </operator_names>
  <![CDATA[
    Tx = -i * 0.5 * (kx * kx);
  ]]>
</operator>

<operator kind="ip" constant="yes" dimensions="y">
  <operator_names> Ty </operator_names>
  <![CDATA[
    Ty = -i * 0.5 * (ky * ky);
  ]]>
</operator>

<![CDATA[
  dpsi_dt = Tx[psi] + Ty[psi] /* plus stuff */;
]]>

Note the 'dimensions' attribute on the IP operators.

This optimisation speeds up cpc_example4.xmds (a 2D NLSE simulator) by about 30%.  Applying this trick currently slows down fixed-step integrators by about 3% because the implementation isn't optimal.  The implementation can be improved to gain approximately an additional 5% of performance in the adaptive case and to correct the slow-down in the fixed-step case.  This would require significant additional effort.

For reference, the potential additional optimisations are:
1. Apply all IP operators in one loop rather than one at a time. (~4% speedup)
2. Avoid complex division operations by precalculating the inverse. (~1% speedup). This optimisation costs additional memory, however the memory requirements for an IP operator have dropped from N^2 to 2N, and this only increases them to 4N.

Testcases have been added for this new optimisation, but documentation hasn't been written.

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