Can now delete params from a config object.
SQUASHME: use correct __delete__ for descriptors

Also add unit tests
Config defaults are now validated

This caused several test cases to fail, which are also fixed.
Usually, this occurred when a network default was set to something
that relied on a parameter that wasn't set; for example,
it is now an error to set a network's default encoders to be a
NumPy array, because the `n_neurons` of each ensemble is not known.
In these cases, changing the value to a distribution instead fixed
it, and is a better thing to do anyhow.

There was also a case in the SPA associative memory that the
Uniform distribution was being sampled and passed in. The sampled
value wasn't used anywhere else, so I just passed in the distribution
instead. This also solves a subtle bug that those distribution
samplings weren't seeded; passing in the distribution ensures that
they will be seeded. Because of this, some assoc_mem tests failed.
I switched them to use the new `rng` and `seed` fixtures, as well
as changing the tolerance on two values (yuck).
Made ClassParams object string more concise.

- This string is used as a general representation of the class,
  so it should be self contained and preferably on one line.
WIP
Responding to PR feedback
Added some config tests
Split apart network stuff