shapelist3d is a quick way to create a complex object made up of simpler ones.
Each of the arguments shapes through override may be a vector of 
values (a list in the case of shapes or matrix).  All values
will be recycled to produce a list of shapes as long as the longest of them.
The xyz.coords function will be used to process the x,
y and z arguments, so a matrix may be used as x to 
specify all three.   If a vector is used for x but y or z
is missing, default values of 0 will be used.
The "shapelist3d" class is simply a list of "shape3d" objects.
Methods for dot3d, wire3d, shade3d,
translate3d, scale3d, and rotate3d
are defined for these objects.