Add `vopt` optional argument type

This is an analog of `vflag` but for optional arguments that carry a
value.  As far as I can see it is not possible to obtain this
functionality without modifying the library.  I need this because I am
generating a Cmdliner term dynamically.

The name `vopt` clashes with the optional argument `?vopt`, so maybe a
different one is needed.