[WIP] Sparse label_binarizer

This is a continuation of a part of PR #2458 based on the code already written by @rsivapr and @arjoly from the branch https://github.com/arjoly/scikit-learn/tree/sparse-label_binarizer.

The first steps are to write tests to motivate correctness and then implement the appropriate changes in label.py. Validation of the input has been abstracted to a global private function to avoid duplication when using the two different APIs. 


- [x] label validation on ```LabelBinarizer()``` - with testing
- [x] label validation on ```label_binarizer()``` - with testing
- [x] Import changes for label.py from arjolys branch sparse-label_binarizer
- [x] Import changes for test_label.py from arjolys branch sparse-label_binarizer
- [x] Handle case where type_of_target gets a sparse matrix input
- [x] Debug: One Label Tests in sklearn/tests/common.py