Port of Data.Set

This is the initial port of Haskell's Data.Set to scalaz.

This implementation has benefits over the stdlib set in that it is an Invariant Set, which complements both `IList` and `==>>`. I'm sure that there are a number of functions that can still be added, but I thought it wise to get this into a PR so that I can get some feedback.

Both `==>>` and `ISet` are based off a balanced tree representation in the background - we might consider potentially extracting the commonalities between them, although I'm not fully sure what that will buy us - the main similarity is only the backing data structure.