Paths in two dimensions are special since we may stroke them to
create a 2D diagram, and (eventually) perform operations such as
intersection and union. They also have a trace, whereas paths in
higher dimensions do not.

Constructing path-based diagrams

Convert a path into a diagram. The resulting diagram has the
names 0, 1, ... assigned to each of the path's vertices.

See also stroke', which takes an extra options record allowing
its behavior to be customized.

Note that a bug in GHC 7.0.1 causes a context stack overflow when
inferring the type of stroke. The solution is to give a type
signature to expressions involving stroke, or (recommended)
upgrade GHC (the bug is fixed in 7.0.2 onwards).

A composition of stroke and pathFromTrail for conveniently
converting a trail directly into a diagram.

Note that a bug in GHC 7.0.1 causes a context stack overflow when
inferring the type of stroke and hence of strokeT as well.
The solution is to give a type signature to expressions involving
strokeT, or (recommended) upgrade GHC (the bug is fixed in 7.0.2
onwards).

Atomic names that should be assigned
to the vertices of the path so that
they can be referenced later. If
there are not enough names, the extra
vertices are not assigned names; if
there are too many, the extra names
are ignored. Note that this is a
list of lists of names, since paths
can consist of multiple trails. The
first list of names are assigned to
the vertices of the first trail, the
second list to the second trail, and
so on.

The fill rule used for determining
which points are inside the path.
The default is Winding. NOTE: for
now, this only affects the resulting
diagram's Query, not how it will
be drawn! To set the fill rule
determining how it is to be drawn,
use the fillRule function.

Inside/outside testing

Test whether the given point is inside the given (closed) path,
by testing whether the point's winding number is nonzero. Note
that False is always returned for open paths, regardless of
the winding number.

Test whether the given point is inside the given (closed) path,
by testing whether a ray extending from the point in the positive
x direction crosses the path an even (outside) or odd (inside)
number of times. Note that False is always returned for
open paths, regardless of the number of crossings.

Clipping

Clip tracks the accumulated clipping paths applied to a
diagram. Note that the semigroup structure on Clip is list
concatenation, so applying multiple clipping paths is sensible.
The clipping region is the intersection of all the applied
clipping paths.