Fix handling of weird GIF with canvas dimension 0x0

Similarly to Chrome, we then use the first sub-rectangle
to set the canvas size.

Also: add check for too-large GIF dimensions (>MAX_CANVAS_SIZE)

Change-Id: Idce55f1e6f6982a8f0e082aac540e16b530e023e
VP8LoadNewBytes: use __builtin_bswap32 if available

mostly to balance the use of bswap64, some gcc platforms are already
interpreting the default case the same

Change-Id: Icf860f55b3f16bea349a7d721e6d6abeeb4e5cf3
Merge "Fix handling of weird GIF with canvas dimension 0x0"
Merge "VP8LoadNewBytes: use __builtin_bswap32 if available"