Speedup grad_lnlikelihood

The most efficient way to calculate the gradient of the log likelihood (per equation (5.9) in R&W) appears to involve pre-computing the inverse of kernel matrix `K`.

Thus, this PR speeds up the computation time for `grad_lnlikelihood` by a factor of `n` for both the Basic and HODLR solvers, where `n` is the number of kernel parameters. (See the commit messages for my specific benchmarks.)