[WIP] Multinomial newtoncg

This adds newton-cg solver to the linear_model.LogisticRegression class when multi_class="multinomial". Benchmarks on a few sparse datasets against L-BFGS solver are included below. Convergence times tended to be slightly lower for newton-cg and the scores were pretty much identical on these datasets.

Benchmark on 20NewsGroup dataset (11314 x 130107 sparse matrix):

![20news_bench](https://cloud.githubusercontent.com/assets/4610553/4179948/d35bf1d0-36dd-11e4-8bb5-b02299024725.jpeg)

Benchmark on Brown Corpus using TFIDF feature extraction (335 x 42453 sparse matrix):

![brown_bench](https://cloud.githubusercontent.com/assets/4610553/4179957/57b56b32-36de-11e4-93d9-70ba5f551238.jpeg)

Benchmark on Movie Review Corpus using TFIDF feature extraction (1340 x 39659 sparse matrix)

![moviereview_bench](https://cloud.githubusercontent.com/assets/4610553/4179803/13e0a806-36d7-11e4-9775-22426e48189a.jpeg)

Benchmark on Reuters Corpus using TFIDF feature extraction (7227 x 30916 sparse matrix)

![reuters_bench](https://cloud.githubusercontent.com/assets/4610553/4180034/40167f08-36e2-11e4-907f-90f7bbe29b7e.jpeg)


Why not just modify these in place (both here and above) in `_multinomial_loss`. Also it seems to me that `log_yhat` is unused anywhere except in loss. In that case.

    a_k += intecept
    a_k -= logsumexp(a_k, axis=1)[:, np.newaxis]
    loss = -(sample_weight * Y * log_yhat).sum()
    loss += 0.5 * alpha * squared_norm(w)
    y_hat = np.exp(y_hat, y_hat)