This seems like an easy thing to misuse regardless of who is doing the calling.  I mean, in addition to making rddA invalid, ...
```scala
val rddA = rdd1.join(rdd2)
val rddB = rdd3.join(rdd2)
rddA.cleanup()
```
...is going to do bad things to rddB, right?  Something that forces responsibility for manually tracking dependencies isn't something we should be making easily accessible.