Improved palette color matching, region iterators

- Palette color matching is now done using distances in
CIELAB color space, exact matches are no longer required
(take note that this is slow, but you'll want to do it only
once per region anyway)
- Static method RGBtoCIELAB() in PaletteFupixel can be used
to convert a color into CIELAB color space
- FURegions can be easily iterated through using a delegate
(performance vs. convenience tradeoff here)
- Added a GetPalette() to get complete surface palette
- Added a convenience method to blit a region using the
current surface palette