Performed a large refactoring

Performed an extensive refactoring on the entire application for the sake of code-cleanliness.
    
- Refactored out of an ad-hoc Imperative paradigm into more of a
functional/declarative paradigm. IMO, this makes the application
signifcantly easier to understand.
    
- Moved away from `argparse` and into `docopt` for argument parsing
    
- Version bump to 2.0.0
    
- Performed extensive refactoring on the setup.py script. Script should
install to the system more cleanly now.
    
- Made minor formatting changes to the --list flag output
    
- Updated the `README`