Initial revision
Use 2x2 squares instead of orthogonal neighbors.
Final 0.1 version.  Changed 2x2 blocks to weighted 3x3 neighborhood.
Changes for version 0.2:
Removed BLACK correction; it didn't help.
Pre-solved color equations for a big speed increase.
Version 0.3
More comments, better error checking.
Switched back to 2x2 blocks, and tried Moire smoothing.
Version 0.4, just for testing
A breakthrough!  I finally figured out what the "mystery pixels" are.
Version 0.8
Devised a totally new interpolation algorithm, using a 3x3 block.
Run time is much longer, but image quality has vastly improved.
Version 0.85
Added user-adjustable brightness and gamma correction.
Changed "gamma" to "gamma_val" to avoid name conflict.
Changed the width and height to macros for more flexibility.
Cosmetic changes to match the new PowerShot A5 version
Replaced "60000" with a macro.
Merged PowerShot A5 code back into the trunk.
Saw major problems with the "tea can" image and made corrections:
- Magnitudes, not color values, are used to find the maximum.
- Color balance and row multipliers (ymul[]) have been adjusted.
Version 0.95
Added support for the PowerShot A50
If "ymul" is global, we can't modify it with each image
Adjust the color balance for whiter whites
Quick first draft of a pipelined CRW converter.  Doesn't
handle edges properly yet.  Quite a disappointment; I was
hoping to get a big speed increase from the L2 cache...
Candidate for 1.00 release.  Fixed edges in second_interpolate()
Discovered that "gcc -O" doubles execution speed.  Wow!
Attempted an optimization in second_interpolate()
gmcy[row] really does need to be cleared before loading!
Added support for the PowerShot Pro70, based on Ed Hamrick's code.