[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)


> The exact formula applied to the multinomial loss objective function is not
> provided in the paper nor could I find it elsewhere online, I had to derive it
> using the technique described in the reference. If you find it helpful I can
> post the work here.

It might be useful to put a few line of comments in the code.

> In terms of motivation for doing this, I believe this direct
> calculation is cheaper than calculating the hessian directly and then
> multiplying by the vector input.

Yes indeed. This is already the way we do it in
sklearn.linear_model.logistic._logistic_loss_grad_hess