title: Picocli, how to recognise presence of option with optional value and custom type converter
body: <p>Picocli v2.3.0.</p>
  
  <pre><code>@CommandLine.Option(names = {"--number-headings"}, arity = "0..1", paramLabel = "levels", description = {"Adds numbers to headings. Optional parameter to set the heading levels to be numbered.", "eg. 2-4"})
  public HeadingNumberingRange numberHeadings;
  </code></pre>
  
  <p>Custom type converter is registered and working correctly when a value is provided (<code>mycommand --number-headings 2-5</code>). But numberHeadings remains <code>null</code> if called like: <code>mycommand --number-headings</code>.</p>
  
  <p>Example at <a href="http://picocli.info/man/2.x/#_optional_values" rel="nofollow noreferrer">http://picocli.info/man/2.x/#_optional_values</a> suggests that a <code>String</code> typed option will receive an empty string when no value is provided. </p>
  
  <p>So the empty string is the <em>default value when option is present but no value is provided</em>.</p>
  
  <p>This allows us to distinguish between 3 situations:</p>
  
  <ol>
  <li>Option not present (we get <code>null</code>)</li>
  <li>Option present with no value (we get empty string)</li>
  <li>Option present with value (we get value)</li>
  </ol>
  
  <p>With a custom <code>ITypeConverter</code>, the <code>convert()</code> method of the <code>ITypeConverter</code> is not called when there is no value provided. So what is the equivalent <em>default value when option is present but no value is provided</em> for custom types?</p>