[SPARK-3266] [Java] Change JavaRDDLike trait to abstract class.

JavaRDDLike's current design is a holdover from an earlier prototype that tried
to achieve code-reuse for methods like map(), filter(), etc. using the same
builder-trait pattern that the Scala collections library uses.  This approach
didn't work due to some compiler issues, but unfortunately we never removed
the confusing trait implementation.

This patch changes JavaRDDLike from a trait to an abstract base class.
This should be source-compatible with earlier versions.

This change resolves some problems with certain inherited methods having the
wrong signatures in the bytecode (such as max(); see SPARK-3266).

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/apache/spark/2186)
<!-- Reviewable:end -->