support conversion to and from integer encodings

Continuing the work of supporting pixel buffers encoded in srfi-4 vector
types, this patch adds the 'scale' field to the encoding class and
support to colorspace-convert for converting between normalized and
integer encodings.

The way that colorspace-convert works is the largest change introduced
by this patch.  There was the problem with the previous design that
creating new colorspaces was an onerous task because one had to provide
conversion functions to and from every colorspace in the system.  This
made it highly impractical for callers to create colorspaces, especially
after the recent patch that added encoding support such that the
encoding is considered to be an attribute of the colorspace.  To solve
this quandary:

Colorspace conversion is no longer keyed by colorspace names.  Instead,
it is keyed by channel names, and channel names are now considered
unique within an implied namespace.  The channel denoted by 'r is the
same as every other channel denoted by 'r in any colorspace, though
subject to modification according to the encoding of the particular
colorspace of the color it is part of.  Any conversion function that
produces a value for channel 'r is considered equivalent to any other
that produces a value for channel 'r, with respect to that channel.  We
currently think that this idea will extend naturally to profiles as
well, but if we are proved wrong on that account, we have a lot of work
ahead of us.

By considering channel names as globally unique, colorspace conversion
becomes a simpler problem, because we need only consider the known
channel values for the source color (and their encoding and profile) and
find a path through a small table of conversion functions to acquire the
channel values of the destination colorspace.  Suppose we have a
normalized rgb color that we want to convert to a u16vector-encoded rgb
color: we already have the values of 'r, 'g, and 'b; we just need to
scale them for encoding in a u16vector; we don't need a specialized
conversion function, just a scale factor.  Suppose we have an rgb color
and we want to convert it to hsv: we have values for 'r, 'g, and 'b, so
we look in a table of conversion functions to find one that gives 'h,
's, and 'v given 'r, 'g, and 'b.

A scale value of #f means that the channel values are stored in
normalized form.  Any other value implies that the value will be stored
as an exact integer.

The implementation of colorspace-convert is only preliminary.  I.e, it
needs work.

Other changes:

 - make-color expects normalized values from the caller.

 - color-values and color-value now take an additional optional
   parameter, 'normalized?', which when true ensures that the returned
   value is normalized to a float in the range 0.0 to 1.0.  By default,
   these procedures return non-normalized values.

 - rgb->hsv and hsv->rgb now take channel values directly as their
   arguments instead of color objects.  They return a list of channel
   values as well.