Adds function properties of a source object to the `lodash` function and
chainable wrapper.

@static
@memberOf _
@category Utilities
@param {Object} object The object of function properties to add to `lodash`.
@param {Object} object The object of function properties to add to `lodash`.
@example

_.mixin({
'capitalize': function(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
});

_.capitalize('moe');
// => 'Moe'

_('moe').capitalize();
// => 'Moe'
function mixin(object, source) {
      var ctor = object,
          isFunc = !source || isFunction(ctor);

      if (!source) {
        ctor = lodashWrapper;
        source = object;
        object = lodash;
      }
      forEach(functions(source), function(methodName) {
        var func = object[methodName] = source[methodName];
        if (isFunc) {
          ctor.prototype[methodName] = function() {
            var value = this.__wrapped__,
                args = [value];

            push.apply(args, arguments);
            var result = func.apply(object, args);
            if (value && typeof value == 'object' && value === result) {
              return this;
            }
            result = new ctor(result);
            result.__chain__ = this.__chain__;
            return result;
          };
        }
      });
    }