`disjoint_union`

creates a union of two or more disjoint graphs.
Thus first the vertices in the second, third, etc. graphs are relabeled to
have completely disjoint graphs. Then a simple union is created. This
function can also be used via the %du% operator.

`graph.disjont.union`

handles graph, vertex and edge attributes. In
particular, it merges vertex and edge attributes using the basic `c()`

function. For graphs that lack some vertex/edge attribute, the corresponding
values in the new graph are set to `NA`

. Graph attributes are simply
copied to the result. If this would result a name clash, then they are
renamed by adding suffixes: _1, _2, etc.

Note that if both graphs have vertex names (ie. a `name`

vertex
attribute), then the concatenated vertex names might be non-unique in the
result. A warning is given if this happens.

An error is generated if some input graphs are directed and others are
undirected.