Fix mlp softmax misclass and cost_from_X when the top layer is Softmax with binary_target_dim

This PR tests and commits two  apparent bugs in the way mlp.Softmax handled the binary_target_dim!=None case:

1. according to documentation and crashes I [experienced](https://groups.google.com/forum/#!topic/pylearn-dev/hkLnYFJ0wL8 "pylearn-dev thread"),  MLP.cost_from_X_data_specs should return the targets space and not the output space in the data specs.

2. in the definition of the 'misclass' channel, Softmax should use different definitions depending on _has_binary_target. If you remove this change, you'll see that the new test I added to test_mlp.py fails.
It comes from my commit. There was a bug there. self.monitoring_dataset.values() > 0 always evaluate to True as the len is not taken. I find bool(self.monitoring_dataset) more explicit.