Fixes #2184 - findExecutable checks permissions

A few convenience functions have been added: findFiles, findFilesWith,
findExecutables.  The most drastic changes comes with findFilesWith
which checks existence and applies another boolean function for
filtering purposes.

Authored-by: Muhaimin Ahsan <leroux@fezrev.com>
Signed-off-by: Austin Seipp <austin@well-typed.com>