Small improvements to `utils`

- Added a function for plotting general data as an image with
  sensible axes
- Fixed a warning in `numpy.py:array`
Added firing rate estimators

- use either kernels or ISIs to estimate firing rates from spikes
- put these functions in a new file `utils/neurons`
- added some rough tests for these functions
Added adaptive LIF neurons

- made one `SimNeurons` object in the builder, rather than
  having `SimLIF`, `SimLIFRate`, etc.
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.