[MLLIB] [PYTHON] SPARK-4221: Expose nonnegative ALS in the python API

SPARK-1553 added alternating nonnegative least squares to MLLib, however it's not possible to access it via the python API.  This pull request resolves that.

The non-deterministic could be removed by have a fixed `seed`, but right now we can not set seed in Python (it will be great if you could also fix it).

How about these:
```
    >>> r1 = (1, 1, 1.0)
    >>> r2 = (1, 2, 2.0)
    >>> r3 = (2, 1, 2.0)
    >>> ratings = sc.parallelize([r1, r2, r3])
    >>> model = ALS.trainImplicit(ratings, 1)
    >>> model.predict(2,2)
    0.4473...

    >>> testset = sc.parallelize([(1, 2), (1, 1)])
    >>> model = ALS.train(ratings, 1)
    >>> model.predictAll(testset).collect()
    [Rating(1, 1, 1), Rating(1, 2, 1)]

    >>> model = ALS.train(ratings, 4)
    >>> model.userFeatures().collect()
    [(2, array('d', [...])), (1, array('d', [...]))]
    >>> model.productFeatures().collect()
    [(2, array('d', [...])), (1, array('d', [...]))]
```