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.
Same here, why these changes? Also, it's unnecessary to cast things to `bool`; this is done implicitly by the `if` statement already.