Multi label related algorithms

Hi,

My research project mainly focuses on multi-label classification, but I found there is only limited support for multi-label classification in scikit-learn (there are multiclass module, but multi-label has some different perspectives and thus can use some different algorithms).

Therefore, I'd like to help implement some novel algorithms for MLC in sklearn. I plan to

1. Add some multi-label classification datasets to sklearn, e.g. [mulan's mlc datasets](http://mulan.sourceforge.net/datasets-mlc.html). (I have added a dataset "emotions" this time, but I wonder should I create a new "sub module" for these multi label datasets, or should I place them in `base.py`?)
2. Implement some basic MLC algorithms
3. Implement some novel multi-label cost-sensitive classfication algorithms, as people in my lab ([CL Lab](http://main.learner.csie.ntu.edu.tw/doku.php)) have some contributions on this area

What do you think?
Should we merge this PR first, or should we keep it until I finish all my work?

Thanks.
> This looks like it will result in infinite recursion, as at this point self.classifiers_ is not empty and predict called from _predict_and_chain calls _predict_and_chain for each entry in self.classifiers_

Sorry for making you confused. In fact, `predict` called from `_predict_and_chain` is `clf.predict`, which means it is not the `predict` in `ClassifierChain` but in the `base_estimator`. So I don't think it cause infinite recursion?



> From the reference paper's first algorithm (Fig. 1) it seems as if in training the data should be augmented with the true label, not the predicted label. However, they then say "the chaining procedure implies that CC cannot be parallelized"; do they mean the fitting or the predicting? Have you referred to the MEKA implementation?

Again, sorry for not be clear on my implementation. In fact, I implemented a *practical variant of CC, named CC-P*, which takes the predicted labels `y_pred[k]` instead of the true labels `y[k]` as the training features. Please refer to this [ICML paper](http://www.csie.ntu.edu.tw/~htlin/paper/doc/icml14CSMLtree.pdf) (Li and Lin), in Section 2, Paragraph 5.

And yes, this is similar to [WEKA's implementation of CCp](http://meka.sourceforge.net/api-1.3/weka/classifiers/multitarget/CCp.html), which seems use *probabilities* output as training features instead of *0/1* predicted label. I think we can also provide an option for user to decide which way they want to use, right?

If we use true label to train, then fitting can be parallelized. However, if we use predicted label/probability to train, then fitting can not be parallelized. On the other hand, the predicting can not be parallelized in either way.