Looking at the few current callers, it's ok to have programPath throw an exception, in the unusual case where it cannot find git-annex.
This works around horribleness in the Mavericks cpp, which falls over on the #if when configure is running. Moving it avoids the file being built at that point. But it's also a location that makes sense..