Decoder compression improvements

This uses the threshold parameter in the decoder compression to avoid compressing specified blocks.  The decoder compressor will retain any column containing an absolute value which is strictly greater than the threshold (i.e. `|x| > threshold`).

The function `get_combined_compressed_decoders` now accepts a `compress` parameter which can either be a bool or a list of bools.  If `compress` is False for any decoder the threshold used to compress that decoder is set to -1, meaning that the entire decoder is retained.
@neworderofjamie this becomes something like:

```python
compresses = [True] * len(tfses)
for e in self.out_edges:
    if e.conn.modulatory:
        compresses[tfses[e.conn]] = False

utils.decoders.get_combined_compressed_decoders(
    decoders, compress=compresses])
```

When learning is involved.