Refactorings + Bugfixes

Reorganized imports

- Added future imports
- Correct grouping of imports

Moved common code from environment subclasses to CommonEnvironment

- `get_os_string` is already in CommonEnvironment and does not need to be redefined.
- Moved `is_file` method to CommonEnvironment.
- Converted methods of environment classes from `staticmethod` to `classmethod`.
- Added or corrected many docstrings.

Encoding Fixes

- Fixed many encoding issues (the software previously crashed with a UnicodeDecodeError on my Debian system). Please take a look at the remarks in the commit message: 41e277cebfc506e6f910334b2a07e06db2c0596b

Other Fixes

- Fixed dangerous kwarg default. Never use mutable objects as kwarg default.


Please review, @cfaessler