nmf with tests

Added NMF algorithm and tests. Tests pass.
Now that it's working and we have tests, it'd be good to refactor in a few places so that the algorithm uses RowMatrix operations throughout, and the RDD gets converted to a RowMatrix at the beginning (if the input isn't one).