Attempt to cache a tree by the content of the files and not only by their size and mtime.

Also, keep old cache directories around so that when you revert to a previous version of a file’s content, you can still use a previous cache. I probably should limit the number of old cache dirs kept around, to prevent the size from getting too crazy big, but haven't implemented it yet.

I'd like to take this even a step further, and keep around cache directories even after the watcher/server is terminated, but this PR is already pretty ambitious (and it seems like that is [not preferred behavior](https://github.com/broccolijs/broccoli#treecleanup) for broccoli).