Added a count() method to the API for the AbstractModel to align with that of other sources

* TODO: Longer term need to rethink the way the count/list works and the object that gets
  returned because models currently behave differently from sources.  We probably should
  have a different method than list() if the return type is different like getPage() or
  something to indicate that metadata will be attached