:rtype: list of contact data objects
+ # Raising an exception efectively makes this definition be that of
+ # an abstract method (i.e. calling it directly raises an exception),
+ # except that it not requires the subclass to implement it if it is
+ # not used. We would like to use @classmethod AND @abstractmethod,
+ # but until Python 3.3 that doesn't work correctly.
+ # http://docs.python.org/3/library/abc.html