GC: #50 fail with Out of memory when mmap fails

when pngc_page_new returns NULL, do not continue, corrupt P->mem and cause SEGVs anymore.
Inside a GC just return and try to continue.
Outside the GC fail with "Out of memory" or "Not enough memory" in boot
This can be reproduced on small 32bit systems (2GB RAM) with the gcbench
and binarytree examples.

On Windows VirtualAlloc(NULL) sometimes fails with Illegal System DLL Relocation
when it internally tries a reserved address (too low). So on Windows try again at
the very last allocatable address: SystemInfo.lpMaximumApplicationAddress - AllocationGranularity (64kb)