A data cache with events for AngularJS