code: function reduce (obj, cb, initial, ctx)
  {
      var acc = initial;
      for(var key in obj)
          acc = cb.call(ctx, acc, key, obj[key]);
      return acc;
  }
docs: Classic reduce (foldl) function but for objects
  @param {Object} obj
  @param {Function} cb
  @param {any} initial
  @param {Object} ctx
  @return {any}