Changed SPA Vocab.text test to use regex

Previously, the values were hard-coded for the particular RNG used.
When changing to use the `rng` fixture, this broke, so I rewrote it
to use regular expressions instead of raw string matching.
This is a little bit less readable, but should be robust to
changes in the RNG.
Use `seed` and `rng` filter in all tests

At least, all tests that I could find with grep.

This caused a few tests to fail, which are also fixed in this commit.
- `spa/tests/test_memory.py` was checking a few specific values,
  which is brittle. Used the average of a few values,
  after plotting the test to see what it was doing.
- `spa/tests/test_pointer.py` used np.allclose when a greater than
  or less than test was more robust.
- `tests/test_solvers.py` had a failure for `LstsqNoise`. It's
  way worse than the others, in a few situations, so I used a
  looser tolerance for it and a stronger one for all other
  solvers.
Reduce use of nl, nl_nodirect in tests

As we add more neuron types, these uses get more expensive.
We want to keep the uses of nl and nl_nodirect to the basic tests
of ensembles, connections, learning rules, etc. and then use LIF
in the majority of cases (networks, for example) to keep our test
suite reasonably fast.

Some tests weren't actually using the `nl` fixture, we were
just running the tests multiple times for no reason!

Also reduced simulation times when we were testing for something
that had been stable for a good part of the simulation already.

And some minor cleanup (make tests shorter, make sure the generated
plots look decent).

Also removed a few more slow examples. We should run these skipped
tests more frequently...
Test all neuron types' tuning/response curves

These plots are quite useful when implementing new neuron types,
and these tests don't take long.