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.

**UPDATE** This is very easily done using the `app` combinator on the level of terms (instead of on the level of arguments).