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

Attempts to address issue https://github.com/edx/diff-cover/issues/104
Not sure I see it as *so* ugly but sure :-)