Improve GIF decoding performance

This change improves LZW decoding performance for GIF decoding.

BACKGROUND

LZW decoding uses a dictionary to store LZW codes. The data structure
stores the last character for each code and the index of last code.
This allows back tracing to construct the entire code. Current
implementation builds the code in reverse order in a temporary buffer
and then copies it into the row buffer.

ALGORITHM

This change eliminates the temporary buffer and saves a memory copy.
If the code length is known in advance then reconstruction can write
directly to the row buffer. The index output buffer is advanced by the
code length, and then reconstruct as usual.

The code length is saved such that it can be used next time.

Testing is done locally with a corpus of 70k images. There's no change
in output and roughly result in a 20% performance gain.

BUG=233076
R=pkasting@chromium.org

Review URL: https://codereview.chromium.org/23646005

git-svn-id: svn://svn.chromium.org/blink/trunk@158842 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Auto-rebaseline for r158839

http://src.chromium.org/viewvc/blink?view=revision&revision=158839

BUG=288225
TBR=leviw@chromium.org

Review URL: https://codereview.chromium.org/25950002

git-svn-id: svn://svn.chromium.org/blink/trunk@158843 bbb929c8-8fbe-4397-9dbb-9b2b20218538