Remove the dependency to install all supported quality tools

- Developers should install all quality tools so move them to
  test_requirements. This removes them from setup.py
- When the code runs it will attempt to import the tool in question
  and return and appropriate response if it fails
- To support this I reworked the main flow a bit. main() now returns an
  int and the code under __main__ calls exit with the return value