work toward support for srfi-4 pixel buffers

Previously this library was only good for working with spot colors,
i.e. individual color objects upon we we do operations.  We want to
generalize it so that it can work on colors in bulk, like a pixel
buffer, without having to create a separate object with separate memory
for each pixel.

This patch introduces the concept of 'encoding' that will allow this.
We have been bold in deciding that encoding can be a property of the
colorspace rather than a separate property of each color.  The rationale
is that "colorspace" is all of the information needed to interpret a set
of color values, and encoding affects that interpretation.

The 'color' type also now has an offset property to support iteration
over pixel buffers.

This patch is only the first step toward encoding support, and further
work and adjustments are expected.