code: function Flag(options) {
  	this.name = options.name;
  	this.description = options.description;
  	this.shortFlag = options.shortFlag;
  	this.longFlag = options.longFlag;
  	this.value = options.value || true;
  
  
  	if (this.shortFlag != null && (this.shortFlag.length != 2 || this.shortFlag[0] !== '-')) {
  		throw new InvalidInputError("The flag: " + this.name + "'s short property must start with a '-' and be one more character.");
  	}
  
  	if (this.longFlag != null && (this.longFlag.length <= 2 || this.longFlag.substr(0, 2) !== '--')) {
  		throw new InvalidInputError("The flag: " + this.name + "'s long property must start with '--' and be one or more character");
  	}
  
  	if ((this.shortFlag == null || this.shortFlag.length === 0) && (this.longFlag == null || this.longFlag.length === 0)) {
  		throw new InvalidInputError("The flag: " + this.name + "'s must have a shortFlag or longFlag property");
  	}
  }
docs: Flag
  
  A flag is a single phrase that is set as a boolean. Flags that aren't passed are set as false.
  
  Options:
  
  * name Name of the flag, it will be stored as cli.params.[name]
  * [description] Description of the flag. Used in help text.
  * short Short version of the flag, starts with '-' and is one more character.
  * [long] The long version of the flag, starts with '--' and is one or more characters.
  * [value] The value to set the variable to if this flag is passed. Defaults to true.
  
  @param {{name, [description], shortFlag, [longFlag], [value]}} options
  
  @constructor