WIP add full git support

Hey, wanted to open up this PR as a place to discuss the correct way to add git to this.

I spiked out an initial version that seems to work, but its not fully in memory and writes files temporarily to a temp directory.
open to suggestions on this.  this is the name I have seen for [commit-ish](https://www.npmjs.org/doc/json.html#Git-URLs-as-Dependencies) in other modules