Full preferences framework for per-monitor color profiles

As usual, this proved more complicated than I expected.  You'd think
there would be a simple way to retrieve the EDID of a given monitor, but
there isn't.  (Seriously, it's bad:
http://ofekshilon.com/2011/11/13/reading-monitor-physical-dimensions-or-getting-the-edid-the-right-way/).

Rather than do that, I rely on the HMONITOR provided by Windows.  Per
documentation, "A physical device has the same HMONITOR value throughout
its lifetime, even across changes to display settings, as long as it
remains a part of the desktop."  If a monitor is attached, removed, then
later reattached, I do not know if the original HMONITOR is returned -
but that question is outside the scope of my current concerns.

The user is now able to specify system or custom color management
(screen only - file color management is ALWAYS on; I am not providing an
alternative to this).  If custom color management is selected, each
monitor can be given its own profile - something I consider very
important, and which most other software does not allow!

With this in place, I can start work on tracking window/monitor
relationships, and updating color management as necessary.