code: function Argument(emitter, text, start, end, prefix, suffix) {
      this.emitter = emitter;
      this.setText(text);
      this.start = start;
      this.end = end;
      this.prefix = prefix;
      this.suffix = suffix;
  }
docs: We record where in the input string an argument comes so we can report errors
  against those string positions.
  We publish a 'change' event when-ever the text changes
  @param emitter Arguments use something else to pass on change events.
  Currently this will be the creating Requisition. This prevents dependency
  loops and prevents us from needing to merge listener lists.
  @param text The string (trimmed) that contains the argument
  @param start The position of the text in the original input string
  @param end See start
  @param prefix Knowledge of quotation marks and whitespace used prior to the
  text in the input string allows us to re-generate the original input from
  the arguments.
  @param suffix Any quotation marks and whitespace used after the text.
  Whitespace is normally placed in the prefix to the succeeding argument, but
  can be used here when this is the last argument.
  @constructor