[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 think that this is a slightly inelegant way of dealing with sample weights: you are introducing computations that I are not useful. I'd rather have something like:
<pre>
buffer = log_logistic(yz)
if sample_weights is not None:
   out = - np.dot(sample_weight * buffer)
else:
  out = - np.sum(log_logistic(yz))
<pre>

With similar code everywhere in the different logistic codes.