Color management engine: custom gamut conversions now available

This was an ugly math project, so I'm quite pleased to have it done!

At present, PD enforces sRGB as a working space.  This is done for a lot
of reasons; most important is consistency, and the fact that the vast
majority of digital images are designed against sRGB anyway.

In the future, I would like to expand working space options to include
standards like Adobe RGB or ProPhoto, but Windows makes this extremely
difficult because all Windows color transforms assume sRGB by default.
As such, we have no choice but to provide our own endpoint
transformations.  This commit includes a function to do just that!

Another benefit of having our own RGB and white point endpoint transform
is that we can change (theoretical) illumination conditions after the
fact.  sRGB assumes the rather dim encoding environment of D50 (5000 K),
which made sense back in the days of CRTs, but not so much now, and
being able to adjust this after the fact against any color temperature
would be awesome.

Another benefit is better handling of PNG files with cHRM chunks.  While
rare, cHRM can specify RGB and white point endpoints to be used, similar
to an ICC profile (but requiring much less space).  I've actually been
using such files to test my code, which is how I know that it works!
The following link provides some very helpful test images:
http://libpng.org/pub/png/png-colortest.html