Replace all command line parsing with Options

- Add a more elaborate conversion mechanism in pargs.cpp, that also
  converts the values back for option types where the C and C++ types do
  not match.
- Arguments added in parse_common_args() no longer need to go through
  the conversion, but instead use Options mechanisms directly.
- Time unit option is now handled through TimeUnitManager.  It requires
  extra refactoring to make oenv to use this also internally, but that
  would remove more duplication.
- A few more tweaks to FileNameOption behavior.  The implementation is
  not perhaps the cleanest currently, but refactoring will follow.

There can be some glitches in uncommon cases or on error paths in the
new approach, but in general, error handling should be much more
user-friendly.  Part of future FileNameOption refactoring aims to
improve this part futher.  The only way to find issues is for people to
actually use the new code.

Change-Id: Iea51bd379a3cd04ad62ac76822fcb9f4251ee9d4