Added heuristic to choose the number of evaluation points

- users can also manually specify the number of eval points by passing an integer
- I added some benchmarks for looking at how the number of evaluation points affects things, but the results are inconclusive. Specifically, it's very difficult to come up with a good heuristic to choose the number of eval points, as this depends on dimensions, number of neurons, tuning curves, decoded function, and possibly other factors. So I just went with @tcstewar's old rule of `500 * dimensions`, with the addition that this is clipped to between 750 and 2500, and then I take the max between this and 2 times the number of neurons (since there's not much point adding more neurons beyond the number of eval points).
- I've also added a couple of new, possibly faster optimization routines (other than Cholesky). They're currently not used anywhere, but if people start finding that solving for decoders of large populations is slow, they can try them out. Speed is also probably machine-dependent.