[SPARK-2544][MLLIB] Improve ALS algorithm resource usage

It may be unnecessary to checkpoint both RDDs in a single iteration. We can checkpoint products only, which is usually smaller than users:

~~~
user -> product -> user -> product -> user -> product -> user -> product -> user -> product -> user -> product
                                                                       check                                                                                check
~~~