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?
Dunno. Any suggestions?

> I think what we had before was less verbose and the checks were more concise.
You shouldn't see it if you don't add the `--debug` flag

> And it seems that some are logging inside of the checking method, and some are not, it would be nice if it were consistent.
True, but I didn't see much sense to create a wrapper function for `os.access()` or the like.