function VirtualRepeatModelArrayLike(model) {
  if (!angular.isFunction(model.getItemAtIndex) ||
      !angular.isFunction(model.getLength)) {
    throw Error('When md-on-demand is enabled, the Object passed to md-virtual-repeat must ' +
        'implement functions getItemAtIndex() and getLength().');
  }

  this.model = model;
}
This VirtualRepeatModelArrayLike class enforces the interface requirements
for infinite scrolling within a mdVirtualRepeatContainer.

@param {Object} model An object with this interface must implement the following interface with
two (2) methods:

getItemAtIndex: function(index) -> item at that index or null if it is not yet
    loaded (It should start downloading the item in that case).

getLength: function() -> number The data length to which the repeater container
    should be sized. Ideally, when the count is known, this method should return it.
    Otherwise, return a higher number than the currently loaded items to produce an
    infinite-scroll behavior.

@usage
<hljs lang="html">
 <md-virtual-repeat-container md-orient-horizontal>
   <div md-virtual-repeat="i in items" md-on-demand>
     Hello {{i}}!
   </div>
 </md-virtual-repeat-container>
</hljs>