Make OptionsInfo more generic.
It is now possible to access information specific to a particular option
type from an OptionsVisitor. Removed hacks that were in place to treat
file name options specifically, since they can now be treated through
the generic framework.
Also added possibility to modify options using a non-const OptionInfo
object, plus visitor and iterator interfaces to use this. Not used yet
in any code, but will be in subsequent commits.
Part of issue #839.
Change-Id: If812252c73616a775ea5e2e13886a0a54db6ceaa