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

#59 
Repeat of the path that's checked in the files.jsExists() method.  Fragile - I suggest you replace jsExists with a method that actually returns the path, then do something like:

```
var src = config.js || files.mainJSPath() || null;
if (src) {
   ...
}
```