service cleanup

now handles systemd better, uses it in every case when it is the init system in use (fixes #345)

clarified the if/elif mess for service discovery (at least a bit), removed a lot of redundancy.