Switch from counters to command hashes

Use a combination of the command schedule and command string to compute a
stable unique command ID.

This improves the timestamp scheduling issues which could resulby by
re-ordering the crontab file.

Fixes duplicate schedules as a result.

Also fixes [ -x/-f/-r ] existence tests (you're checking against the full command string, not the actual file).