Fixed bugs in libpng wrapper.

- The png_create_***_struct wrappers will now properly allocate enough memory for the entire d_context, not just its pointer.
    (This fixes all kinds of strange crashes.)
- The d_context is now NULLed out (initialized) after allocation.
    (More sources of crashing fixed.)
- jmp_buf is no longer stack allocated in the wrapper functions.
    (The d_context object is probably a better place for it.)
- More defensive coding in error handlers to hopefully avoid longjmp'ing into frames that are no longer on the call stack.
- Tested situations that cause libpng to throw and warn.
    (Sorry, no unittests.  I'm not sure how to automatically produce and measure these without a lot of work.)
- Moved some modules around to make naming more sensible (hopefully).
    This also ensures that PngException is publically by importing 'libpng/png.d'.