Implement `depends_on :casks`

This PR includes lib and test code for hard Cask dependencies, i.e. Casks which must always be installed prior to the depender.

There are a few organizational warts. Notably:
- TopologicalHash, a helper class for dependency sorting, should not be in the top namespace. We do have `extend`, but it is reserved to monkeypatches.
- CaskDependencies should also not be in the top namespace, being a specialized class.