WIP: RNN framework

- [x] Introduce a `SequenceSpace` class which can represent a sequence of elements in any other space by prepending a time-dimension.
- [x] Monkey patch MLP to deal with `SequenceSpace` input by reshaping `(time, batch, data)` to `(time * batch, data)` and changing spaces for non-RNN-friendly layers.
- [x] RNN-friendly subclasses of `SequentialSubsetIterator` and `ShuffledSequentialSubsetIterator` which can create batches of samples of the same length, ensuring that no padding is required.
- [x] ~~RNN-friendly subclasses of e.g. `ForcedEvenIterator`, `SubsetIterator`, etc.~~
- [x] ~~Find a cleaner way for the correct iterator to be called. Right now each dataset needs to construct the subset iterator explicitly and pass `sequence_lengths`, which would have to be done for each sequence-dataset. This might not be needed if we implement zero-padding and mask instead (see below).~~
- [x] Patch `FiniteDatasetIterator` to shuffle the dimensions of `SequenceSpace` data from `(batch, time, data)` (the way the dataset stores it) to `(time, batch, data)` (the way the model consumes it)
- [x] ~~Implement zero-padding and a mask (see above)~~
- [x] Gradient clipping as a cost wrapper
- [ ] Port a whole bunch of things from GroundHog and @jych's code e.g. ~~gradient clipping (as a `ModelExtension`?)~~, LSTM, etc.
- [x] Costs
- [ ] Cost-matrix wrapping