huge refactor of the cli and tests

- use argparse for cli
- refactor interface to return an emitter/promise
- update dependencies, clean up lib structure
- more and cleaner aliases
- more solid tests
- updated docs and manpage
- add code coverage testing