Add union

Ok, for real this time? @ttrefren @tdumitrescu 
needs a test which exercises 3-arg version (key, vals, callback)