Eventually, all subprograms should implement this interface. The
FindProgram function decides which subprogram to call without causing
any side effects, and can be easily tested.
Right now, only some trivial "subprograms" are split out.
Logics of the main package is now in program/. Subprograms are subpackages of
program/. For instance, daemon/ is now program/daemon.
The daemon/service package is now simply daemon/.
The version string has been moved into its own package, build/.