Use (NullSpace(), '') for empty data_specs.

`data` arg of `Cost.expr` (and other methods) should be valid according
to the space, not a flat tuple.
Do not pass flat tuples to Cost as data, use data_specs
Add string representation for spaces
Make TransformerDataset work when 'features' is not required
Add Model.get_monitoring_data_specs()

This method returns the data_specs that has to be passed to the channels
returned by Model.get_monitoring_channels()
Update data_specs utils to handle NullSpace and tuples
Update monitor.setup to feed the right data to channels
Update sgd to correctly handle flat/nested args