Applicatin starting point.

        This will run the associated method/function/module or print a help
        list if it's an unknown keyword or the syntax is incorrect.

        Keyword arguments:
        args -- Custom application arguments (default sys.argv)

def run(self, args=None):
        """Applicatin starting point.

        This will run the associated method/function/module or print a help
        list if it's an unknown keyword or the syntax is incorrect.

        Keyword arguments:
        args -- Custom application arguments (default sys.argv)

        """
        # TODO: Add tests to how command line arguments are passed in
        raw_args = self.__parser.parse_args(args=args)
        args = vars(raw_args)
        cmd = args.pop('cmd')
        if hasattr(cmd, '__call__'):
            cmd(**args)