Matrix factorization with missing values

This is still a work in progress. I still have to test a few things:
- [ ] Check that it works well with different datatypes (the cython code assumes that it's receiving floats)
- [ ] Check if it could be a good idea to raise a warning when the factorization isn't working (the gradient is added to multiple items in the factor, thereby they will diverge if the learning rate is too high. But it may no be a good idea to simply reject some learning rate values, because they could work with another initial values of the factors)
- [ ] Print warnings if rows/columns only contains missing values
- [ ] Add a better way to test the score in the imputer
- [ ] Replace the parameters init_* in the constructor by a different one that could be used with grid_search
- [ ] Finish docstrings
- [ ] Run pep8, pyflakes, ...
- [ ] Fix the build (I have an error with another module, probably a rookie mistake with the imports)