Make callbacks interfaces rather than abstract classes.

Using interfaces is more idiomatic Java and gives the client
programmer more flexibility.

Originally we used abstract classes with default implementation of
methods to reduce the burden on the client programmers, allowing them
to just implement some of the methods. However using abstract classes
does not allow the client programmer to use some common Java idioms,
such as "mixing in" callbacks from multiple interfaces into a single
class, possibly one of the big classes in their application.

Change-Id: I464f9729a2f70a0355fff9238136a3cb7a6a9cbf
2 files changed