Added some argument testing/manipulation to match WebKit/Moz behaviors.
Additionally benchmarked:
* branching on `if (a == 0 || a == 255)`, as it is
* not branching (always doing the alpha calculation)
* Mozilla's implementation found here: https://dxr.mozilla.org/mozilla-central/source/dom/canvas/CanvasRenderingContext2D.cpp#5083
Mozilla's is insignificantly faster (p=0.17) :) so left it as-is.
Versions up to 4.1.6 of GIFLIB defined a GIF_LIB_VERSION macro that was string-valued.
Versions after 4.1.6 define integer-valued GIFLIB_MAJOR, GIFLIB_MINOR, and GIFLIB_RELEASE macros for the three components of the version.
Check for GIF_LIB_VERSION, otherwise use the new macros.
There were compilation errors if the version of the library was less than 1.2.0.
This was happening because the macros JPEG_LIB_VERSION_MAJOR and JPEG_LIB_VERSION_MINOR were not being defined, since the compile-time macro LIBJPEG_TURBO_VERSION was introduced in version 1.2.0.
The problem was fixed by giving those two macros a definition if it was missing.