title: argparse option arg using nargs='?' before positional arg in subparser
body: <pre><code>import argparse
  
  parser = argparse.ArgumentParser()
  parser.add_argument(
      '--optional',
      default=None,
      const='some-const',
      nargs='?',
      help='optional')
  
  subparsers = parser.add_subparsers()
  
  subparser = subparsers.add_parser('subparser')
  
  subparser.add_argument(
      'positional',
      help='positional')
  
  args = parser.parse_args()
  
  print args
  
  ./test.py --optional opt subparser positional
  Namespace(optional='opt', positional='positional')  &lt;-- works as expected
  
  ./test.py --optional subparser positional
  usage: test.py [-h] [--optional [OPTIONAL]] {subparser} ...
  test.py: error: invalid choice: 'positional' (choose from 'subparser')  &lt;-- throws an error
   Namespace(optional='some-const', positional='positional')  &lt;-- would expect to see this
  </code></pre>
  
  <p>Above is my simplest test code to demonstrate this problem.  I would like to have an optional arg using nargs='?' and const <em>before</em> my positional arg in the subparser.  I have read that I can pass the original parser as a parent to the child subparser, but this doesn't solve the problem.  I have tried adding add_help=False and conflict_handler='resolve' to the initial parser declaration when I tried that.  Can anyone point me in the right direction on this?</p>
  
  <p>Thanks,
  Scott</p>