Optimize rho_beta_half
Optimize rho_beta_half

Using diagonalization (eigh) instead of repeated squaring (m_p) has
better scaling as a function of both grid length and number of links.

For smaller matrices (fewer than 500 points on the grid), m_p was still
faster by up to a factor of 2 with 10 or 100 links, but was marginally
slower with 1000 links. However, for smaller matrices the absolute time
required is so short that the difference is inconsequential.

For larger matrices (between 500 and 1500 points), eigh was never
slower, but was often *much* faster: with 1000 points and 1000 links, it
was over 7 times faster. For 1500 points and 2000 links, the total
runtime of the harmonic oscillator example script dropped from 222 s to
31 s.

0/pathintmatmult