[MRG] Logistic Regression CV

Continuation of the work by @fabianp and @GaelVaroquaux 

TODO's

- [x] I think the some of the private functions in logistic.py can be simplified. In particular, it is my intuition that we could squash some of the functions _logistic* and _logistic_*_intercept without sacrificing a significant amount of performance

- [x] sparse matrix support (any help from the people who actually use sparse matrices would be great here)

- [x] implement multinomial logistic or raise a meaningful error for multiclass pointing to OvA, OvO meta-estimators

- [x] More tests for LogisticCV object (and some are failing)

- [x] Document tolerance and stopping criterions
I don't see how class_weight='auto' can work with this code. Supporting class_weight="auto" is important (as this is typically the sane behavior) and is typically done via sklearn.utils.compute_class_weights.

What I suggest is that:

* If class_weight is not 'auto', you need to call compute_class_weight just before doing the 'mask = (y ==...'
* If class_weight is 'auto', you call compute_class_weight after doing the 'y[~mask] = -1'.

And then you can also remove the two lines below.