First implementation of application arguments + options API.

Implemented ``add_argument`` and ``add_option``. Arguments and options are accessible consistently as lists via ``application.args``. For example, to access the last set optional ``--username`` (options are repeatable), a developer would use ``self.args.username[-1]``. The same holds for positional arguments set via the API.