Add support for resizing proportionally by setting a dimension to < 0
Don't return a 0 FrameIndex for images with parent

Otherwise, the method is useless since to get a reference to one
frame, it must have a parent.
Initial the buf Image in Apply with its parent.
Don't assume the image function will return new images

Some functions modify the image in place, like CompositeImage
Return an error if CompositeImage fails
Separate code for initializing refcounts into a func
Don't assume that the function will return a different image

Some functions modify the images in place
Fix Composite() for animations
When the image has a parent, consider it the root

This way functions which use the apply* helpers work correctly
on individual frames.
Add support for encoding gifs with giflib

Resulting GIF has lower quality, but encoding is 9-10x
faster and the encoded data is ~20% smaller.
Fix compilation with GCC 4.4

Define a macro for AcquireImagePixels(), wrap it in pragmas
to silence the warnings only on GCC >= 4.6.
Add GoImage() method on Image

Returns the image as an image.Image
Add support for manipulating Image properties
Change Signature() to return the actual signature

It was previously returning success/failure, user had to then
grab the signature from the image properties. API is more convenient
this way, since the user can detect a failure when the returned
signature is empty.
Add benchmark for GifEncode()
Preallocate the output gif buffer
Optimize gif encoding

Use IM/GM to do a dither and quantization pass first before
calling into giflib. This reduces encoding time by ~50% while
generating the same final image.
Include the image name in error if test fails to decode
Add support for reading from a GifBuffer

Eventually, we might want to add support for decoding via giflib
rather than calling out to gifsicle.
Simplify code for fixing gifs