(Events) Move shared RSVP code into seperate RSVPService
Replace $rootScope.safeApply() with $timeout()

$timeout will automatically invoke the passed function within an AngularJS
$apply block, so we don't need to implement our own method.

For more info, see http://docs.angularjs.org/api/ng.$timeout