code: function tapArgs (fn, tappers) {
      return function () {
          var len = arguments.length;
          var tappersLen = tappers.length;
          var args = [];
  
          for (var i = 0; i < len; i++) {
              args.push(i < tappersLen ? tappers[i](arguments[i]) : arguments[i]);
          }
  
          return fn.apply(this, args);
      };
  }
docs: Builds a function that allows to "tap" into the arguments of the original one.
  This allows to extract simple values from complex ones, transform arguments or simply intercept them.
  If a "tapper" isn't found the argument is passed as it is.
  @example
  var someObject = {count: 5};
  var someArrayData = [2, 3, 123, 5, 6, 7, 54, 65, 76, 0];
  var getDataAmount = _.tapArgs(_.sum, [_.getKey("count"), _.getKey("length")]);
  
  getDataAmount(someObject, someArrayData); // => 15
  
  @memberof module:lamb
  @category Function
  @see {@link module:lamb.mapArgs|mapArgs}
  @since 0.3.0
  @param {Function} fn
  @param {Function[]} tappers
  @returns {Function}