Major refactor to make it easier to extend, and now runs with Gulp

#59 
I don't understand what this file is for.  Could you add a comment at the top?