[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
- [ ] Debug: One Label Tests in sklearn/tests/common.py
- [x] Test ```is_label_indicator_matrix``` with sparse input
- [x] Test ```label_binarize``` with binary one class case 
- [x] Break down _inverse_label_binarize