Only use git if the git binary is in the exec-path
Assert shell commands succeed
provide a way to declare required executables

The current templates all depend on external tools like make and
virtualenv to be constructed. Adds a keyword arg to
define-project-skeleton that specifies the programs required associated
with download instructions.

Updates template declarations to specify their requirements.
add define-skeleton-constructor for external tools

Adds define-skeleton-constructor, which provides a similar interface to
define-project-skeleton but allows an arbitrary elisp function to manage
template creation. This allows external tools to be called.

Implements #1
Add ruby gem project type