Normalize encoders. Always.

Fixes #565.

Had to change `spa.test_thalamus.test_routing` as it failed with
this change. After looking at the plot, seemed that it was testing
values before settling; altered the points tested accordingly.
Break up test_reset and test_dt_dependence

We were doing too much with these tests, which will cause weird
failures for certain neuron models.

`test_reset` was broken up into two tests, one that tests that
neuron models reset properly and one that tests that learning rules
reset properly. Similarly, `test_dt_depenence` was also broken up
into two tests, one that uses LIFs and all learning rules and one
that doesn't use learning but tests all neuron types.
Add default `rates` and `gain_bias` function

In the `NeuronType` class. These defaults should work for rate-based
neurons (`rates` is based on what `LIFRate.rates` was doing already).

The `gain_bias` function is adapted from some of @tcstewar's code.
Add RectifiedLinear neuron type

In doing so, noticed some errors in the rectified linear example
notebook. Fixed those errors in this commit.
Add Sigmoid neuron type

And enable it for all `nl` and `nl_nodirect` tests.
Add Izhikevich neuron type

Unlike the Sigmoid and RectifiedLinear types, the Izhikevich neuron
is not really suitable to be added to the `nl` and `nl_nodirect`
fixtures; while it is possible to decode functions from Izhikevich
ensembles, it requires a lot more tweaking and care. Instead, there
is an explanatory notebook, as well as a short test that ensures that
we can simulate (without crashing) several sets of commonly used
Izhikevich model parameters. Note that without the tweaks that are
commented on in `Izhikevich.step_math`, even this simple test might
blow up.
runcom -> rc in cache benchmark

This renaming was done before merging the cache, but was forgotten in
`benchmakrs/cache.ipynb` since it's not run automatically anywhere.
Fix sign error in cache performance test.
Store cache files as NCO.

Store the pickle part and array part of the cache data in a single
"Nengo cache object" file. That reduces overhead due to a lot of small
pickle files. Also, it ensures some more consistency in the cache
because it is not possible anymore that only the pickle or the array
file gets lost. That again frees us from checking for orphans which
gives a slightly better performance.
Count file system overhead towards cache size.
Remove unused argument in DecoderCache.get_size
Distribute cache files in subfolders.

File system performance degrades with too many files in one directory.
Remove decoders cached before cache changes.

We do this by checking if a versioned "legacy file" exists and matches
the current legacy version; if not, we'll do a sweep for old cached
files. This logic should be updated if we ever change the format
in which we store cache files.
Fix slicing pre node with function on connection

- Can now connect from a node with slicing and a function
- Added test for this case in test_connection