implement union
add some more basic set functions

I am not sure why I am bothering. Just for fun, I guess.