Cache results from compilation to avoid unnecessary rebuilds.

This borrows heavily from [broccoli-caching-writer](https://github.com/rwjblue/broccoli-caching-writer) to perform caching of builds. I tried to figure out how to inherit from `broccoli-caching-writer`, but it is either extremely difficult or impossible, since `broccoli-caching-writer` does not allow multiple source trees.

Now stylus compilation will only be invoked if there are actually changes to the file system for the input trees. Otherwise, the last cached build will be used.
Technically, yes. It would be possible to use something like [rewire](https://github.com/jhnns/rewire), which loads the module and injects some code into the module to allow retrieving module level variables. That seemed like a similar level of dirtiness, but I could try doing that instead, or I could see about extracting the common functionality into another module.