input.conf: put dvdnav commands under {dvdnav}

This means these key binding will basically not exist, unless dvdnav is
in use (at runtime).
options: remove CONF_TYPE_PRINT_INDIRECT

This was unused.
options: get rid of ambiguous option parsing

Options parsing used to be ambiguous, as in the splitting into option
and values pairs was ambiguous. Example:

    -option -something

It wasn't clear whether -option actually takes an argument or not. The
string "-something" could either be a separate option, or an argument
to "-option". The code had to call the option specific parser function
to resolve this.

This made everything complicated and didn't even have a real use. There
was only one case where this was actually used: string lists
(m_option_type_string_list) and options based on it. That is because
this option type actually turns a single option into a proxy for several
real arguments, e.g. "vf*" can handle "-vf-add" and "-vf-clr". Options
suffixed with "-clr" are the only options of this group which take no
arguments.

This is ambiguous only with the "old syntax" (as shown above). The "new"
option syntax always puts option name and value into same argument.
(E.g. "--option=--something" or "--option" "--something".)

Simplify the code by making it statically known whether an option takes
a parameter or not with the flag M_OPT_TYPE_OLD_SYNTAX_NO_PARAM. If it's
set, the option parser assumes the option takes no argument.

The only real ambiguity left, string list options that end on "-clr",
are special cased in the parser.

Remove some duplication of the logic in the command line parser by
moving all argument splitting logic into split_opt(). (It's arguable
whether that can be considered code duplication, but now the code is a
bit simpler anyway. This might be subjective.)

Remove the "ambiguous" parameter from all option parsing related code.

Make m_config unaware of the pre-parsing concept.

Make most CONF_NOCFG options also CONF_GLOBAL (except those explicitly
usable as per-file options.)
options: get rid of some compatibility stuff

Doesn't make sense because we broke/are going to break compatibility
with everything anyway.

Remove mechanism for warning the user against disabled options.

Remove colorspace alternative option values.
m_config: support flatten and merge flags for suboptions

M_OPT_PREFIXED allows adding top-level options with the suboption
mechanism. The point of this is that, even though these options are
top-level options, they don't need to be added directly to a top-
level option array (such as mplayer_opts[]). Instead, the suboption
can be defined in a separate source file. Only a suboption declaration
is needed to add these options.

M_OPT_MERGE is similar to M_OPT_PREFIXED, but doesn't add the name of
the suboptions entry as prefix.

Given you have a suboption declaration "prefix" and the suboption
"subopt", you can pass them as follows on the command line:
  normal:           --prefix=subopt=value
  M_OPT_PREFIXED:   --prefix-subopt=value
  M_OPT_MERGE:      --subopt=value
m_config: support auto-allocated sub-structs

Given your option struct has a field that is a pointer to another
struct, this commit allows you to declare options that write into that
other struct. The code in m_config will dereference the pointer field
on its own if such an option is accessed. If the field is NULL on
initialization of the containing m_config, the struct is automatically
allocated.

OPT_SUBSTRUCT() can be used to declare such a field.
struct m_sub_options is used to describe the pointed-to struct, and
includes size and defaults if the struct has to be allocated by
m_config.
screenshot: move image writer code into new file image_writer.c
image_writer: never pass anamorphic images to image writer
image_writer: allow specifying pixel formats for image writers
image_writer: add option parsing

image_writer now provides its own option parsing, and screenshot.c and
the mplayer frontend use it.
image_writer: add some PNM family image formats

While the PNM formats are not that useful, supporting them helps
getting rid of vo_pnm.

This makes use of the libavcodec PNM encoder.

Compared to vo_pnm, at least PNM ASCII mode is not supported. It doesn't
look like libavcodec supports this mode for encoding.
image_writer: add TGA image format

For getting rid of vo_tga.

This makes use of the libavcodec TGA encoder.
image_writer: support all JPEG specific options vo_jpeg supports

Most of these are useless or probably even dangerous. Support them
anyway, because it's easy, and we want to replace vo_jpeg without any
disadvantages.
video_out: rename privsize member to priv_size
vo_image: add new video output for writing images

This is supposed to replace vo_png and others.
vo_image: add outdir option

The function checked_mkdir is taken from vo_jpeg, with the error
handling stripped down to a reasonable level.
VO: remove vo_jpeg, vo_png, vo_pnm, vo_tga

All of these have been replaced by vo_image.
VO: remove vo_gif89a, vo_md5sum, vo_yuv4mpeg

The encoding branch by divverent can handle of these via libavformat.

Note: for some reason, libav/ffmpeg have a GIF muxer only, and no
demuxer. The gif configure checks needef for the mplayer internal gif
demuxer can't be removed yet.
libvo: remove videodev_mjpeg.h

This was used by stream/tvi_v4l.c, which was removed a while ago.
image_writer: rename "filetype" option to "format"

Although slightly less precise, this sounds less clunky.

This change also causes the --screenshot-filetype option to be renamed
to --screenshot-format.