Support for up to libpng 1.6.3

Summary:
This has been tested on up to libpng 1.6.3 and retains full backwards
compatibility with libpng 1.2.y and 1.4.y
Includes if/else'd changes, and 1.6.y changes in addition to the
following from upstream chromium skia:

  * Add conditional defines for deprecated NULL type casts.
  * Use wrapper functions for accessing png_structp & png_infop fields
    (direct access is deprecated).

Tested on Fedora 17 (libpng 1.5) and Ubuntu 12.04 (libpng 1.2).

Note: there is one png_structp direct field acces left in
SkPNGImageDecoder::onDecodeRegion() for which libpng does not provide a
wrapper method (png_ptr->pass = 0). That should be OK for now as the code
is only enabled when SK_BUILD_FOR_ANDROID is set, and the Android libpng
version is striclty controlled. But it may become an issue in the future
when/if Android decides to update libpng, so we should investigate a
solution. cfX-NOTE: not an issue for us currently due to being unnecessary
on our libpng 1.6.3 implementation.

R=scroggo@google.com, reed@google.com, djsollen@google.com

Author: fmalita@google.com

Test Plan: win

Reviewers: randall.rushing, synergy

Reviewed By: synergy

Differential Revision: http://review.codefirex.com/D371