[SPARK-4396] allow lookup by index in Python's Rating

In PySpark, ALS can take an RDD of (user, product, rating) tuples as input. However, model.predict outputs an RDD of Rating. So on the input side, users can use r[0], r[1], r[2], while on the output side, users have to use r.user, r.product, r.rating. We should allow lookup by index in Rating.

@davies
It's hard to choose between them according performance micro benchmark, they may behave differently in different environment.

All the implementation of MLlib are in scala, Python API is just a wrapper, so may the performance of serialization is the most one we should care about, not accessors.