Add formatter class to format the help and usage messages.

Remove friendship from the options class and use an explicit
member function instead to extend the arguments. Use expression
SFINAE in order to block the greedy template version of the function
to take up in overload resolution.
Add parse member function for option_parser.
Add get and get_or functions. Remove unused is_flag function.