Implement `depends_on :cask`

This PR includes library and (some) test code for hard Cask dependencies, i.e. Casks which must always be installed prior to the depender.

There are some warts. Most notably:
- An invasive optional argument, `skip_cask_deps`, is passed down from `Cask::Installer.install` to `satisfy_dependencies`, in order to avoid redundant loading and (re)sorting of Cask subdependencies.

Secondarily:
- TopologicalHash, a helper class for dependency sorting, should not be in the top namespace. We do have `extend`, but it is reserved for monkeypatches.
- CaskDependencies should also not be in the top namespace, being a specialized class.