[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
We could put them in __reduce__ to make sure that the deserializer in JVM got the right type.

.a and [x] are used in Python, so you need to take care of the types as usual.