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

#59