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.
Is there a way to consume `broccoli-caching-writer` such that copying the logic below is not necessary?