First pass at pluginify static method.

This pull request creates a static method on `CachingWriter` that accepts an object literal of methods/props and an optional description string to generate a class that extends `CachingWriter`, abstracting away all the inheritance ceremony.

Example:

```javascript
module.exports = CachingWriter.pluginify({
  constructor: function(options) {
    this.customThing = options.customThing;
  },
  updateCache: function(srcDir, destDir) {
    /* Do the main processing */
  }
}, 'MyCustomCachingWriter');
```

Names and conventions are up for debate. Would love your feedback!


Note: I am not saying it is wrong, I'm just not sure what the purpose is...