Introduce a TopologicalHash class

In the interest of `depends_on :cask`, we introduce a topologically
sortable hashmap, implemented as a small subclass of Hash.
Add exception for cyclic Cask dependencies
Implement Cask dependencies

as a class concerned with recursively loading, graphing and sorting all
dependencies of a given Cask.
Satisfy Cask dependencies on install

Includes an unsavory hack to bypass redundant checks for Cask
subdependencies, in the form of an optional argument.
Add tests for depends_on :cask