SQUASHME: change BCM learning rate
Use decoder and transform probes in examples

Specifically, learn_communication_channel and learn_unsupervised.
In order to not crash computers, we sample these at a lower rate
than most probes.
Allow more flexible signal reshaping

Apparently the only reason we limited reshaping was to avoid
non-contiguous signals. This commit ensures that all signals
are C-contiguous numpy arrays, and therefore we allow any reshaping.

Note that there's a bit of weird edge case for scalars and the use
of ascontiguousarray; I filed a bug against Numpy for this, and
apparently there's no particularly good reason for it;
see https://github.com/numpy/numpy/issues/5300.

Also added the ability to use -1 when reshaping, like numpy arrays.
This ability is tested in test_builder.
SQUASHME: incorporate signal feedback

Changes:
- Check for multiple -1 in passed shape
- Refactor reshape to reduce duplication
- use np.array instead of ascontiguousarray, which do the same thing
Synapses now work on any ndarry shape

Previously, they assumed that the input would be a vector
(1D array). This commit makes the output shape identical to
the input shape (rather than the size).

FYI the use case for this is for filtering probed decoders
and transforms.
Test that learning rules are dt invariant

Assuming that the dt is below tau_ref, and therefore the spiking
activity isn't heavily impacted by the choice of dt.

Also added filtering to the decoder and transform probing
in examples.
SQUASHME: remove BCM-specific thing in dt_dependence