Computes the union between the current array, and all the array objects passed in. That is,
the set of unique objects present in all of the arrays.
@param {Array} a The Array object to operate on.
@param {...Array} arr A list of array objects
@return {Array<*>} The union set of the provided arrays.
function union (a) {
                    var args = libs.object.only(libs.object.toArray(arguments), 'array');

                    var union = [];
                    args.unshift(a);
                    libs.object.each(args, function (array) {
                        libs.object.each(array, function (item) {
                            if(union.indexOf(item) === -1) union.push(item);
                        });
                    });
                    return union;
                }