Fix argument parsing when switches have attached values or switches.

- Fix parsing of multiple single-character switches in a single
  argument.  Only the first switch was being seen (e.g., given ``-uv``,
  the ``-v`` was being dropped).  [Discovered by John Szakmeister.]

- Fix parsing of single-character switches with attached values.
  The attached value was being dropped (e.g., given ``-rHEAD``, the
  ``HEAD`` value was being lost).  [Discovered by John Szakmeister.]

- Fix parsing of long switches with values attached via "=".
  Constructs such as ``--depth=infinity`` were being rejected as
  invalid switches.