code: function forEachFactory(properties)
  {
    // expand object's combinations into an array of objects
    if (typeOf(properties) == 'object')
    {
      properties = cartesian(clone(properties));
    }
  
    return {command: partial(commandFactory, properties)};
  }
docs: Constructs set of commands for each property of the passed object
  with loops over passed arrays
  
  @param   {object|array|string} properties - list of properties to run a command with
  @returns {object} run command factory