The math and logical operators are overloaded for zoidlists as follows:

+
, | |
union |

- | and-not |

*
, & |
intersection |

^ | exclusive or |

! |
inverse |

The result of the operation is a new zoidlist, with neither of the operands affected.

To test for an empty zoidlist, the `==` and `!=` comparisons
to the value 0 can be applied. Note that ```if (!zlist)`'' is an
incorrect test for an empty zoidlist; it will invert the list and
return true if the inverted list is not empty.

There is a current ``reference'' zoidlist which represents the
``background''. If not explicitly set (with the `SetZref`
function), this is taken as the boundary of the current cell. The
reference is used in operations such as inversion and exclusive-or
where the size of the background must be assumed. Note that this
background can be an arbitrary shape. In binary operators with
zoidlists, if one of the operands is a scalar, 0 represents an empty
list, and nonzero represents the reference list.