[SPARK-2334] fix rdd.id() Attribute Error

rdd.id() was returning an Attribute Error in some cases because self._id is not getting set.  So instead of returning the _id attribute, return the value of id() from the jrdd.  Fixes bug SPARK-2334.
Test with: sc.parallelize([1,2,3]).map(lambda x: x+1).id()

self._jrdd.id() will need an RPC in py4j, so it's better to cache it as `_id`.

For PipelineRDD() and SchemaRDD(), we can override id() to fetch the id from _jrdd (also cache it).