func NewSet(hasher Hasher) *Set {
	if hasher == nil {
		hasher = MD5
	}
	return &Set{hasher, make(map[string]interface{})}
}
NewSet creates a new Set.
package types
import "sort"
type Set struct {
	hash Hasher
	data map[string]interface{}
}
func (set *Set) Add(i interface{}) {
	index := set.hash(i)
	if _, ok := set.data[index]; ok {
		return
	}
	set.data[index] = i
}
func (set *Set) Slice() []interface{} {
	i := 0
	keys := make([]string, len(set.data))
	for key := range set.data {
		keys[i] = key
		i++
	}
	sort.Strings(keys)
	j := 0
	slice := make([]interface{}, len(set.data))
	for _, key := range keys {
		slice[j] = set.data[key]
		j++
	}
	return slice
}