Mutually exclusive options

  <option>
    <name>directory</name>
    <type>std::string</type>
    <longopt>directory</longopt>
    <descr>pathname</descr>
    <hasvalue />
  </option>

  <option>
    <name>socket</name>
    <type>int</type>
    <longopt>socket</longopt>
    <descr>socket port</descr>
    <hasvalue />
  </option>

  <mutex>
    <name>directory</name>
    <name>socket</name>
  </mutex>

A separately-specified mutex contains a list of mutually exclusive options. The above example allows either directory or socket, but not both.