Ensure we're always cleaning out the temp dir.

Also branch on the downloadsRecipes.download method such that we can
call download() multiple times in a single run of fetcher()

Note that between calls of fetcher() we actually add a download cleanup
(for example, the repo could change)
Pass all options to recipes b/c global obsessions!

Add an option to not preemptively wipe the tmp dir. This is only going
to be useful for recipes that invoke other recipes by calling fetcher
again.
Support for hard dependencies. - Fixes #2