function applyFunctions(obj, scope, propsConfig) {
    return Object.keys(obj || {}).reduce(function(prev, key) {
      var value = obj[key];
      var config = (propsConfig || {})[key] || {};
      /**
       * wrap functions in a function that ensures they are scope.$applied
       * ensures that when function is called from a React component
       * the Angular digest cycle is run
       */
      prev[key] = angular.isFunction(value) && config.wrapApply !== false
        ? applied(value, scope)
        : value;

      return prev;
    }, {});
  }
wraps functions on obj in scope.$apply

keeps backwards compatibility, as if propsConfig is not passed, it will
work as before, wrapping all functions and won't wrap only when specified.

@version 0.4.1
@param obj react component props
@param scope current scope
@param propsConfig configuration object for all properties
@returns {Object} props with the functions wrapped in scope.$apply