[WIP] Add L-bfgs solver for NMF

Addresses #2124. Actually not yet, because I need to make the l-bfgs solver efficient on sparse data in the way @mblondel suggested.

I will benchmark and see in what cases and with what settings which solver is better, and implement 'auto'.

I will also try profiling it a bit.