code: function (s) {
          var args = argsToArray(arguments);
          return args.length > 1 ? PlaceHolderLiteralString.fromArgs(args) : new LiteralString(s);
      }
docs: Creates a {@link patio.sql.LiteralString} or {@link patio.sql.PlaceHolderLiteralString}
  depending on the arguments passed in. If a single string is passed in then
  it is assumed to be a {@link patio.sql.LiteralString}. If more than one argument is
  passed in then it is assumed to be a {@link patio.sql.PlaceHolderLiteralString}.
  
  @example
  
  //a literal string that will be placed in an SQL query with out quoting.
  patio.sql.literal("a"); //=> new patio.sql.LiteralString('a');
  
  //a placeholder string that will have ? replaced with the {@link patio.Dataset#literal} version of
  //the arugment and replaced in the string.
  patio.sql.literal("a = ?", 1)  //=> a = 1
  patio.sql.literal("a = ?", "b"); //=> a = 'b'
  patio.sql.literal("a = {a} AND b = {b}", {a : 1, b : 2}); //=> a = 1 AND b = 2
  
  @param {String ...} s variable number of arguments where the first argument
  is a string. If multiple arguments are passed it is a assumed to be a {@link patio.sql.PlaceHolderLiteralString}
  
  @return {patio.sql.LiteralString|patio.sql.PlaceHolderLiteralString} an expression that can be used as an argument
  for {@link patio.Dataset} query methods.