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.
Because empty monitoring_dataset should evaluate to False, is not None is not enough. I wrote it as below (l.280), I find it more explicit, but this is subjective I guess.