opt, or value building parser

- refactoring value parser: now result value are passend in with
  reference, to avoid copy

- add opt -> boost::optional value parser

- add or -> boost::variant value parser