Initial Data.Set port.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Rename and initial tests (for laws)

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Added initial round of tests for ISet

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Remove reference to missing funciton.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Add final modifier and @tailrec

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Added documentation to `map`.

The `map` function, although implemented in `ISet`, does not mean that
`ISet` is a `Functor` instance. It does not implement the required
composition law - due to the restrictions required on the `Order`
instances.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Merge pull request #641 from gpampara/data-set

Port of Data.Set