src/_png.cpp: Remove CXX dependance for module definition

Rationale: Matplotlib uses PyCXX as a wrapper for the Python C-API.
PyCXX bypasses the official CPython API functions (Py_InitModule*)
and uses implementation specific details to generate modules.

This breaks the compatibility with PyPy, which only strives to
implement the officially CPython API functions. Getting rid of PyCXX
is nontrivial, and not necessarily desirable actually, since it does
do a good job in wrapping Refcounting and Exceptions all over the
matplotlib source code. Reintroducing manual Reference/Exception
management would be very error prone.

Here, I suggest to only get rid of PyCXX for module definitions, but
keep it for Refcounting and Exceptions. This can be achieved fairly
easily by changing only the module method definitions from typically:

Py::Object _png_module::write_png(const Py::Tuple& args) {
    ...
    return Py::Object(...);
}

to:

PyObject* write_png(PyObject *self, PyObject *_args) {
    Py::Tuple args(_args);
    ...
    PyObject *result = ...
    return result;
}

So the class _png_module is gone and the method initialization is
done with a standard PyMethodDef table and Py_InitModule3(). This
removes the problematic functionality of PyCXX while keeping the
source code nearly unchanged. In fact, more concise and efficient
code results.

The _png extension modified in this way has been tested with CPython
2.7.3 on MacOSX and was found to work. It also compiles with PyPy
(pypy-pyarray branch) and can be imported. It is expected that after
a small number of bug fixes in the cpyext C-API compatibility layer
of PyPy, it will also work.

I plan to refactor all other matplotlib C extensions in the same way
in subsequent commits.

Dr. Stefan H. Muller (shmueller2@gmail.com)