Divided the defineProperty from the value definition
Performance and logic improvements
@sammyt suggestion for reduce improved complexity on the intersection and that led me to delete removeDuplicates.
@sammyt suggested to extract the functions out of the defineProperties for readability
some polishing on tests
reduced a lot of code
Merge pull request #8 from bitoiu/optimizations

Optimizations