Fix for memory leak

This fixes a memory leak that happened when `__init__` was called more
than once (an oddity that can happen during the lifetime of a Python
process). 

It moves some C-level initialization to `__cinit__`. The Cython `__cinit__` 
method is only ever called once per-instance (to actually create the instance).

The `__init__` method had one tweak to it to guard against overwriting variables
that pointed to allocated memory. Previously, when `__init__` was called more 
than once, PALM was reinitializing some variables and lost track of the memory
that they originally pointed to.

http://docs.cython.org/src/userguide/special_methods.html#initialisation-methods-cinit-and-init