A type for darcs' options. The value contains the command line
switch(es) for the option, a help string, and a function to build a
DarcsFlag from the command line arguments. for each constructor,
shortSwitches represents the list of short command line switches
which invoke the option, longSwitches the list of long command line
switches, optDescr the description of the option, and argDescr the description
of its argument, if any. mkFlag is a function which makes a DarcsFlag from
the arguments of the option.

DarcsOptAbsPathOrStdOption shortSwitches longSwitches defaultPath
mkFlag ArgDescr OptDescr where defaultPath is a default value
for the Path, as a string to be parsed as if it had been given
on the command line.
The constructor for options with an optional path argument, such as -O

getRepourl takes a list of flags and returns the url of the
repository specified by Repodir "directory" in that list of flags, if any.
This flag is present if darcs was invoked with --repodir=DIRECTORY

getAuthor takes a list of flags and returns the author of the
change specified by Author "Leo Tolstoy" in that list of flags, if any.
Otherwise, if Pipe is present, asks the user who is the author and
returns the answer. If neither are present, try to guess the author,
from _darcs/prefs, and if it's not possible, ask the user.

getSendmailCmd takes a list of flags and returns the sendmail command
to be used by darcs send. Looks for a command specified by
SendmailCmd "command" in that list of flags, if any.
This flag is present if darcs was invoked with --sendmail-command=COMMAND
Alternatively the user can set $SENDMAIL which will be used as a fallback if present.

getSubject takes a list of flags and returns the subject of the mail
to be sent by darcs send. Looks for a subject specified by
Subject "subject" in that list of flags, if any.
This flag is present if darcs was invoked with --subject=SUBJECT

getCc takes a list of flags and returns the addresses to send a copy of
the patch bundle to when using darcs send.
looks for a cc address specified by Cc "address" in that list of flags.
Returns the addresses as a comma separated string.

printDryRunMessageAndExit action opts patches prints a string
representing the action that would be taken if the --dry-run option
had not been passed to darcs. Then darcs exits successfully.
action is the name of the action being taken, like "push"opts is the list of flags which were sent to darcs
patches is the sequence of patches which would be touched by action.