Decoder solvers now output helpful info.

- They all record the RMSE of the solution
- Some record other information about the solve as well
Minor improvements to decoder solvers.

- Fixed problems with _block_conjgrad with vector sigma input.
- Moved import statements inside solvers.
- Allowed sub-solver to be specified.
Fixed spike rate test

- was wrongly filtering spikes after a previous PR to remove
  cycles from the compute graph.
Connection functions can return 0-d and 1-d arrays
Gave subsolver test looser tolerances

- it was breaking on some machines
Added system to specify default parameters

This is done at Network level
Bugfix with hierarchical interactions
Added separate config context stack
Added empty configs to Networks by default
Added more informative __str__ for ConfigItems
Configs inherit attributes from parents
Improved docstrings and other cleanup
Improved copy of `Config`

- no longer need to use deepcopy
Added tests for `Config` copying.
Added test for config stack
Additional sanity checks for configs

Added a check in Config.__exit__ to ensure that we don't
pop the default config off of the stack.
Also added a check in Network.__exit__ to ensure that
the config being popped is the network's config.

Since configs have their own stack, this means that things
get kind of dicey if we change the network's config;
that new config doesn't get added Config.context,
and the old config remains.