Added Command Line Flag Parser

Command line parser and its unit tests, should be able to handle long
and short flags as well as extra arguments.