This commit is to improve the way that PipeLines connect to objects.

Previously, we had pipelines connects using points and then creating a
surface bound on that point and using the normal that is based on the
dividing direction of the two pipes, or for an end point used that
segment normal.

This addition adds the possibility to add a surface boundary as the pipe
segment divider. The boundary allows curved surfaces etc to be attached.
This is done with the function:

PipeLine::addSurfPoint(Point[Vec3D],SurfaceString,CommontString)

The point (mid point) is still required to construct the axis. If a
number of pipe units link along with surfaces then it is ignored.
The SurfaceString is the link surface pointing OUTWARD. The CommonString
is the surface that all using of the SurfaceString obey.

As a pipe is a linked line of units, the surface has to be complemented
to get the next section. This also caused a problem becasue divider
surface (e.g. a cylinder and a divider plane) do not need to be
complemented. That was dealt with by adding a common surface string to
the new function, this is not complemented.

The example of this use is in the ESS model, in SupplyPipe. A lower pipe
is connected to the lower moderator using the cylindrical surfaces.

In order to make the access to the common surface easier, an additional
funciton getCommonSurf was added to LayerComp.