Merging our works

Hello M. Plaster.
I've been using gift since more than two years now, and made some fix and enhancement into my fork.
Unfortunately, Sentientwaffle has never answered to my pullrequest, and I'd like to use NPM version instead of my github repo.

You'll find here a merge of our both work, I hope it can be published one day :)