(1) Program gamma values: Non-linear curves.
(2) Be able to fade between arbitrary tables on a point by point basis
    as an option (slow, but means you can fade to any arbitrary default
    table - see (3) below).
(3) ScreenFX_SetDefaults: Program default tables for RGB,
    with a flag to say "don't set the hardware to this just yet"
(4) Some way to get ScreenFX_Fade to return to default tables without
    having to hand-write it. A sort of "ScreenFX_Restore".
(5) Queue - post a series of non-blocking fades to be activated in the
    background until a cancel, reset, or the fades are completed.
    (Should ScreenFX_Status return the total amount of time left for
    all fades in the queue, or both?).
(6) Timer - ask for a fade after a given time. If implemented through
    the queue, a queued item can be an action that includes "wait", so
    a delay is implemented by simply queueing a wait then a fade. That
    does mean that you can't say "wait for 300cs then start this fade,
    interrupting whatever else is going on" though, because the wait
    operation must've already either interrupted the queue or gone on
    to the end of it. (How should ScreenFX_Status represent it? Should
    it quote the remaining time as the wait plus the fade duration, or
    both?)
(7) ScreenFX_Status - based on the above, it should probably return
    an indication of the current operation, the time remaining for
    the current operation, the number of future operations, and the
    total time those will take.
(8) Ick, Steve wants a *-command or some sort or service call/event
    to go off when the fade finishes.
