Use ::Dir so we get ruby core's Dir, not FPM::Package::Dir
Factor 'does this program exist?' into a separate method

The tests already reimplement "program_in_path?" so it makes sense to
stop duplicating.
Use program_exists? instead of program_in_path?

This additionally checks that the program exists and is executable if
the path given is either a path or a program name.
program_exists? now checks if the file path is executable.

Also move program_exists? near program_in_path