I tried to take a look at all our methods and figure out what method dispatch we would need -- For most methods I think we only need dispatch on the first argument (which is the RDD). However for some methods like `join(rdd1, rdd2)` it would be good to dispatch on more than the first argument.

S4 seems to provide that right now and the slot model right now makes it easy to implement functions where we need to access the `jrdd` member. However I am going to try and rewrite parts of the code over the next few days in S3 / RC classes to see how things look.

@hadley I've mostly been using http://adv-r.had.co.nz/OO-essentials.html to learn more -- Is there anything else I should be looking at ?