Diagnose improvements

I've improved the diagnose module a bit.
- Converted class methods to simple functions
- The `run()` does not get check functions by name anymore (this is a good thing, because we now can define what will be checked ourselves)
- Added more logging
- Added a function to check if a python package or module name is importable
- Removed redundancy by using the diagnose functions in `tts.py`/`stt.py`

I also removed the executable flag and added a `--diagnose` argument to `jasper.py`. Although is debateable (too many arguments? adding more complexity to jasper.py?), I think this will make it a lot easier for users to run the diagnose.
IMHO, it's not very intuitive to look in the client folder and try to execute arbitrary modules (This also goes for `populate.py`, but that belongs to another PR, possibly #128). All important functionality should be available via the main script `jasper.py`. (I'd not consider `client/test.py` important for end-users, so this does not have to be added to `jasper.py`)


These three kinds of checks (executables, requirements, and files) all share the same structure. Can this be abstracted? I think what we had before was less verbose and the checks were more concise. 

And it seems that some are logging inside of the checking method, and some are not, it would be nice if it were consistent.