Handle bad ICO data better.

Cherry-pick from 57ad493789cb1a97574390b5ccf4fb9183ed3814 in Skia:

Interpret size and offset as size_t, as they should be. When read
as int, they could be negative values. If they are negative (rather
than positive and very large), they will not allow us to fail the
length test, resulting in trying to read uninitialized memory.

BUG=b/16010240
R=halcanary@google.com

Author: scroggo@google.com

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

BUG:16010240
Change-Id: I70ff31c1d06ea2705700bb9f5c767a100b946d09
(cherry picked from commit fe7bd55e54e3d6e2b483e51f5880d209aa9ce4ef)