adding "cliff" for crafting multi-level command

adding "cliff" for crafting multi-level command for command-line applications
doc_home: https://cliff.readthedocs.org/en/latest/introduction.html

from dev:
> The cliff framework is meant to be used to create multi-level commands such as subversion and git, where the main program handles some basic argument parsing and then invokes a sub-command to do the work.