Set implementation

Set implementation that prevents duplicates from being added as well as supports set-theoretic operations like union and intersect. Element structure backed up with a binary search tree