Added Dependent.hs to simulate dependent types (useful for term rewriting). This is by far the hackiest thing I've written in Haskell