bash-completion: rework startable/restartable units once more

I tried to use 'systemctl --all list-units' to filter unit files, but
this always filters out unit files which are not loaded. We want to complete
systemctl start with those units too, so this approach is not going to work.

New version is rather slow, but hopefully correct.
systemctl: let list-{units,unit-files } honour --type

The docs don't clarify what is expected, but I don't see any reason
why --type should be ignored.

Also restucture the compund conditions into separate clauses for
easier reading.
systemctl: obey --state in list-unit-files
bash-completion: use improved filtering to make things faster
zsh-completion: update start/restart completions

Now zsh should behave the same for those two subcommands as bash.